2016-08-24 78 views
0

我的理解使用Browserify的目的是允许您在浏览器中使用require('modules'),将所有依赖关系捆绑在一起。Browserify和Gulp require()

在Gulp中,您还可以使用require('modules') - 那么与Browserify有什么不同?例如:

var browserify = require('browserify'); 
var gulp = require('gulp'); 
+0

可能重复的[什么是Javascript的“需要”?](http://stackoverflow.com/questions/9901082/what-is-this-javascript-require) –

回答

2

require()是Node的加载/导入模块的方式。运行Gulp任务时,它将由计算机上的节点运行时运行,因此require()是“本机”支持的。

Browserify来得很晚,并且受到了这种行为的启发。由于它说Browserify's website

浏览器不具备要求的方法定义,但Node.js的一样。借助Browserify,您可以使用与Node中使用require相同的方式编写使用require的代码。

换句话说,当您的JavaScript在浏览器中运行时,不会找到节点,因此您不能使用require()。浏览器会抱怨说没有这种方法。 Browserify的解决方案是让你使用模块编写代码,但是在它到达浏览器之前需要额外的编译步骤,以便require()的工作方式与在Node中的工作方式相同。

“额外编译步骤”涉及确定哪些模块依赖于其他模块,并以便于某些模块在需要时加载其他模块(使用require())的方式捆绑您的代码。然后,Browserify将自己的require()方法提供给捆绑中的浏览器,从而提供与节点require()基本相同的功能。

This is a good article解释了Browserify的工作原理。

所以在某些方面,要回答你的问题,没有太大的区别,你需要担心。主要的实际区别是Browserify需要一个明确的编译/构建步骤来生成您的输出包,而您在运行带有Node(因此Gulp)的代码时不需要考虑这一点。

相关问题