0
我有一个变量当前在全球设置,我正在使用两个不同的require()
函数。我怎么能从第一个require()
到另一个?如何将一个变量从一个require()传递给另一个?
我有一个变量当前在全球设置,我正在使用两个不同的require()
函数。我怎么能从第一个require()
到另一个?如何将一个变量从一个require()传递给另一个?
据我所知:你没有。让他们读取相同数据的唯一方法是将它放在某处,以便他们都可以读取它们。因为这两个require()
函数都放在一个普通的JavaScript文件中,它们共享的唯一范围是全局范围。
另一种可能性是将它传递给require()
的回调函数,但这意味着您必须编写一个返回数据的“模块”(或使用dojo/text
插件以只读方式读取文件)。
根本不建议有两个require()
声明。如果我们仍然在讨论同一个秒表(我已经读了一下你的代码),你应该把所有的事件处理程序放在一个require()
块中。然后你可以把他们两个都需要的数据放在require()
块内,他们都可以读取它。
一些原因有多个require()
块是没有益处的:
require()
块,这是令人困惑的。大多数人不会反正使用它(推荐与否)。dojo/query
和dojo/dom
,则必须每次将它们添加到模块列表中。我不认为它会下载这个文件两次,但它更多的是写/维护。require()
块需要访问相同的数据时,您将遇到类似的范围问题。这意味着你必须把它们放在全局范围内(这是另一个不好的做法),只用简单的数据编写一个模块(不是很有用),或者你必须将它们都包装在一个函数中,你必须手动执行(混淆)
为什么不建议有两个'require()'语句? –
由于这样的原因,因为读起来很混乱,所以你需要写很多重复的东西(比如像'dojo/query'这样的常见模块导入),难以维护,而且最重要的是如果你的设计中有一些错误想要这样做。如果你单独使用require()块,我想你有理由把它们分开,如果你有一个合理的理由,你应该定义一个单独的模块。 – g00glen00b
Gotcha。我合并了3个'require'块http://jsfiddle.net/P7b9S/32/ –