将Java Script库添加为npm依赖项或仅将它们包含在HTML中之间的区别是什么?

时间:2014-03-23 07:13:57

标签: javascript node.js npm

关注npm starred packages我发现有些项目如 Grunt lodash 下划线可以使用。

我总是以经典的方式使用它们:

<script src="js/lib/lodash.min.js"></script>

是什么让它与众不同?如何在node_modules包中使用它们?

3 个答案:

答案 0 :(得分:3)

一方面,npm是用于为Node安装软件包的Node工具。包是模块的集合。在Node中,模块加载了require调用,这是Node提供的全局函数。

另一方面,<script>是浏览器加载JavaScript代码时使用的基本机制。

这似乎是互斥的,但npm也可用于安装旨在在Node和浏览器中运行两者的软件包。在这种情况下,我们使用Node的require从Node中的包加载模块,但是我们可以使用<script>或Browserify或RequireJS在浏览器中加载相同的模块。在浏览器中使用什么方法实际上取决于包的设计方式。如果文档不好,您必须阅读文档以了解或阅读源代码。我设计了一个以这种方式工作的npm包。您可以使用Node的require在Node中加载它,并使用RequireJS在浏览器中加载它。

npm甚至可用于安装旨在在浏览器中运行 的软件包。在这种情况下,npm只是一种方便的传递和依赖机制。我有这样设计的另一个包。它突出显示它不能在Node中运行。这是npm的公认用法,目前有一些提案(herehere)可以使npm更好地处理此类情景。

答案 1 :(得分:1)

节点模块包旨在与nodejs中的应用程序一起使用,而不是与其他基于Web的应用程序一起使用。正如您在java应用程序中add reference in .Net projectadd jar in your classpath一样,与使用特定功能类似,我们使用npm将模块添加到我们的nodejs应用程序中。

由于node.js不仅仅是关于Web开发,而且是来自服务器端的JavaScript,所以这样有意义。

答案 2 :(得分:1)

如果你想在你的html中添加JS dependancies并使用类似于npm的方法,你应该查看bower。

http://bower.io/

它有相同的想法

npm install packageName  

除了

bower install packageName 

还有安装的

Bower从github获取最新代码,您也可以指定版本。

而不是package.json你有一个bower.json,所以如果给你一个空的依赖项目:

bower install

然后凉亭将去抓住依赖性也指定版本并且繁荣你们关闭!您有一个bower_components目录,用于保存整个依赖树。

前端的npm!