如何在RequireJS中访问(命名)模块?

时间:2016-11-09 14:26:48

标签: module coffeescript requirejs

如何使用RequireJS访问(命名)模块?

让我们说这是我的模块( sayings / sayings-list.coffee ):

define 'saySomething', [], ->
  alert 'something'

我的主文件( main.coffee )如下所示:

require ['sayings/sayings-list'], (sayings) ->
  sayings.saySomething()

现在我要来回发送一个变量!类似的东西:

require ['sayings/sayings-list'], (sayings) ->
  sayings.saySomething(text)

如何在我的模块中反映

感谢。

1 个答案:

答案 0 :(得分:1)

一般规则:你应该使用匿名define调用而不是命名define调用,让优化器(r.js或其他理解AMD规范的优化器)在优化你的时候添加名称模块组成一个捆绑。此规则很少有例外,但您在此处显示的内容也不例外。

如果必须使用命名模块,则应按如下方式构造它:

define 'saySomething', [], -> 
  saySomething: (text) -> alert text

这样它就可以导出一个可以saySomething访问的函数。请注意,模块名称和导出函数的名称可能不同。

然后您必须使用其名称加载它:

require ['saySomething'], (sayings) ->
  sayings.saySomething(text)

并且您必须设置配置以提供将模块名称映射到包含它的文件的路径。这是必要的,因为通过将名称添加到define调用,您已将模块名称与文件名解耦。所以你必须告诉RequireJS如何找到模块。

require.config
  paths:
    saySomething: "sayings/sayings-list"