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

How To Access (Named) Modules In 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)

这将如何反映 在我的模块中?

谢谢。

一般规则:您应该使用匿名 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"