2012-02-03 73 views
1

我是js世界的新手,这真的让我感到困惑,昨天我开始在我的代码中合作underscore.js,所以我开始在REPL环境中尝试它,我选择使用节点控制台,我想出了var _ = require (./underscore.js),然后一切正常。在节点控制台中使用require和在html中使用script标记有什么区别

今天我试着用<script>标签嵌入到html中,看来我不需要手动var _ = underscore,对象_已经在那里了。

有人能解释为什么,以及如何使用NPM在全球范围内安装下划线,并要求它没有指定文件位置(如红宝石要求模块)

回答

2

的主要区别是,使用脚本标签将所有的全局绑定的文件范围到全球共享范围全部页面上的代码。当您在网站上编写JavaScript时,就好像所有不同的脚本都在一个文件中一样。

另一方面,节点的要求更合理地不会以这种方式填充全局范围。相反,它会返回一个包含模块导出的所有内容的对象;这基本上是模块的命名空间。这就是为什么你必须做_ = require('./underscore.js')。这更好,因为你不必担心不同文件的全局变量冲突。

+0

很清楚,谢谢 – mko 2012-02-04 10:47:09

相关问题