将Browserify与JQuery一起使用 - 它真的是什么'意思?

时间:2015-07-13 21:21:04

标签: jquery node.js browserify

javascript等新手我想做一个纯HTML / Javascript项目。我查看了requireJS,从我读到的内容来看,在我看来,有几个项目经历了将requireJS项目切换到node / browserify项目的痛苦。

所以我想我只是从一个node / browserify项目开始。

我有限的理解是,当您浏览项目时,它基本上将依赖项与您的javascript打包在一起。

几个问题

  1. 是否只创建一个文件?

  2. 如果它创建了多个文件,那么如果多个文件依赖于同一个项目会发生什么 (如lodash)?它是否附加了所需的源代码 项目多次?

  3. 如果我使用浏览器端库,该怎么办? 作为JQuery ......在这种情况下,根据docs,似乎我 需要使用jsdom。当我浏览这个时会发生什么?是 它比仅仅使用jquery更昂贵?

1 个答案:

答案 0 :(得分:1)

Node.js和jQuery:

Node.js和浏览器之间的一个重要区别是Node.js是just a

  

平台构建于Chrome's JavaScript runtime

它只是意味着它允许您执行javascript代码。浏览器也有自己的JS运行时来在客户端执行脚本,另外提供一个平均值"for representing and interacting with objects in HTML, XHTML, and XML documents.",即文档对象模型(DOM)。

在Node.js中没有HTML文件,你只需要处理JS代码,因此在Node.js中使用jQuery没有任何意义,since jQuery

  

通过易于使用的API在大量浏览器中运行,使HTML文档遍历和操作,事件处理,动画和Ajax变得更加简单。

<小时/> Node.js和browserify:

Node.js提供module loading system,允许您使用require关键字包含其他模块。因此,任何包含require代码的JS代码都无法在浏览器中执行,因为ECMA5没有内置的模块加载机制。

Browserify只是嘲笑require关键字,并允许您在浏览器中使用它,如here所述:

  

Browserify使用术语条目文件来描述它将开始读取依赖图的位置,其输出称为包。

您项目的Node.js?

由于您的项目旨在在浏览器(而不是服务器)内运行,因此无需迁移到Node.js. 但是,您可以使用Nodej来更好地维护您的项目:

  • 在开发中的模块中分离项目,并使用browserify创建单个捆绑文件以进行生产。
  • 使用多个预处理器并进行编译(例如coffeeScriptLess等)
  • 测试您的模块(例如mochajest
  • 使用构建系统(例如gulp
  • 等...

在你完成测试你的模块(并编译了你的coffeescript!)后,你只需要浏览器创建你的main.bundle.js,然后在生产中将其导入:

<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="main.bundle.js"></script>