在节点控制台中使用require和在html中使用script标签有什么区别

mko*_*mko 3 javascript scope npm underscore.js

我是js世界的新手,这真的让我感到困惑,昨天我开始在代码中合作underscore.js,因此我开始在REPL环境中尝试,我选择使用Node控制台,我想到了var _ = require (./underscore.js),那么一切正常。

今天,我尝试通过使用<script>标签将其嵌入html中,看来我不需要手动操作var _ = underscore,对象_已经存在。

有人可以说明原因,以及如何使用npm全局安装下划线并在不指定文件位置的情况下要求使用下划线(例如ruby require Module)

Tik*_*vis 5

主要区别在于,使用脚本标记会将文件作用域的所有全局绑定添加到页面上所有代码共享的全局作用域。在网站上编写JavaScript时,就好像所有不同的脚本都在一个文件中一样。

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