2016-08-24 79 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)的代碼時不需要考慮這一點。

相關問題