【问题标题】:Using Browserify with JQuery - what does it 'really' mean?将 Browserify 与 JQuery 一起使用 - 它“真正”是什么意思?
【发布时间】:2015-10-02 07:52:29
【问题描述】:

JavaScript 新手等。我想做一个纯 HTML/Javascript 项目。我查看了 requireJS,根据我的阅读,在我看来,一些项目经历了将他们的 requireJS 项目切换到节点/浏览器项目的痛苦。

所以我以为我只是从一个节点/浏览器项目开始。

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

几个问题

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

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

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

【问题讨论】:

  • 它创建了一个文件,至少对我来说是这样。依赖项不包含多次(至少不在同一个文件中,idk 如果可以创建多个),我在 browserify 项目中使用 jQuery(semantic-ui 需要它)。有关一些随机用例,请参阅此 gulpfile(函数 'build',对象 browserifyArguments)。目前无法写出真正的答案,抱歉。 github.com/hyperstone/moon-shard/blob/master/gulpfile.js

标签: jquery node.js browserify


【解决方案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)。 p>

在 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。 不过,您可以使用 Nodejs 更好地维护您的项目:

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

在你完成之后,测试你的模块(并编译你的coffeescript!)你只需让browserify创建你的main.bundle.js,然后像这样在你的生产中导入它:

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

【讨论】:

  • 这很有帮助,我今天会更多地使用 browserify 并相应地标记这个答案。
  • @hba 让我知道答案是否缺少问题中的任何一点。
  • 我不确定您的评论 - 在 node-js 上使用 jquery 是否没有意义 - 是否正确。
猜你喜欢
  • 2015-05-10
  • 1970-01-01
  • 2014-04-07
  • 2019-06-02
  • 2014-03-21
  • 2016-06-06
  • 2012-05-18
  • 2022-01-01
相关资源
最近更新 更多