2016-11-09 49 views
0

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

比方说,这是我的模块(俗语/ 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

一般规则:你应该使用匿名define呼叫,而不是命名define电话,让(即了解AMD规范r.js或其他优化)优化加名时,它优化你的模块成束。这条规则很少有例外,但你在这里展示的并不是一个例外。

如果你必须使用一个名为模块,你应该构建这样的:

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

因此,它出口作为saySomething访问的功能。请注意,模块名称和导出函数的名称可能不同。

然后,你必须使用它的名字载入它:

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

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

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

谢谢!如果我没有给模块分配名称,最后的配置部分是不需要的? – Timo

+0

没错。如果你没有指定一个名称作为'define'的第一个参数,那么这个特定的配置是不需要的,因为那么使用模块路径(减去'.js'扩展名)来创建模块名称(这将是'熟语/熟语-list')。所以当你使用它的时候,你会'需要['sayings/sayings-list'],(谚语) - >' – Louis

+0

好极了,最后我开始了! :D谢谢@Louis! – Timo

相关问题