如何将变量从一个require()传递给另一个?

时间:2014-01-10 05:43:14

标签: dojo

我有一个当前全局设置的变量,我在两个不同的require()函数中使用。如何将它从第一个require()传递到另一个?

1 个答案:

答案 0 :(得分:2)

据我所知:你没有。让它们读取相同数据的唯一方法是将它放在某处,以便它们都可以读取它。由于两个require()函数都放在普通的JavaScript文件中,因此它们共享的唯一范围是全局范围。

另一种可能性是将它传递给require()的回调函数,但这意味着你必须编写一个返回数据的“模块”(或使用dojo/text插件来读取文件只读)。

建议不要有两个require()语句。如果我们还在谈论相同的秒表(我已经读过你的代码),你应该将所有事件处理程序放在一个require()块中。然后你可以将它们都需要的数据放在require()块中,它们都可以读取它。

拥有多个require()块的一些原因无益:

  • 难以阅读/维护:如果您有多个require()块,则会让人感到困惑。大多数人不管怎样都不使用它(推荐与否)。
  • 更多重复:如果您使用的是dojo/querydojo/dom等常用模块,则必须每次都将它们添加到模块列表中。我不认为它会下载文件两次,但它仍然需要编写/维护。
  • 范围问题:正如您刚才注意到的,当多个require()块需要访问相同数据时,您会遇到类似这样的范围问题。这意味着你必须将它们放在全局范围内(这是另一种不好的做法),用简单的数据编写一个模块(不是很有用),或者你必须将它们都包装在一个函数中,你必须手动执行它(令人困惑) )
  • 分离问题:如果您有充分的理由将它们分开,则应将它们分成模块。