Gulp應(yīng)該和Grunt比較,他們的區(qū)別我就不說(shuō)了,說(shuō)說(shuō)用處吧。Gulp / Grunt 是一種工具,能夠優(yōu)化前端工作流程。比如自動(dòng)刷新頁(yè)面、combo、壓縮css、js、編譯less等等。簡(jiǎn)單來(lái)說(shuō),就是使用Gulp/Grunt,然后配置你需要的插件,就可以把以前需要手工做的事情讓它幫你做了。
說(shuō)到 browserify / webpack ,那還要說(shuō)到 seajs / requirejs 。這四個(gè)都是JS模塊化的方案。其中seajs / requirejs 是一種類型,browserify / webpack 是另一種類型。
seajs / requirejs : 是一種在線"編譯" 模塊的方案,相當(dāng)于在頁(yè)面上加載一個(gè) CMD/AMD 解釋器。這樣瀏覽器就認(rèn)識(shí)了 define、exports、module 這些東西。也就實(shí)現(xiàn)了模塊化。
browserify / webpack : 是一個(gè)預(yù)編譯模塊的方案,相比于上面 ,這個(gè)方案更加智能。沒(méi)用過(guò)browserify,這里以webpack為例。首先,它是預(yù)編譯的,不需要在瀏覽器中加載解釋器。另外,你在本地直接寫JS,不管是 AMD / CMD / ES6 風(fēng)格的模塊化,它都能認(rèn)識(shí),并且編譯成瀏覽器認(rèn)識(shí)的JS。
這樣就知道,Gulp是一個(gè)工具,而webpack等等是模塊化方案。Gulp也可以配置seajs、requirejs甚至webpack的插件。
不知道這樣夠清楚了么
Gulp、Grunt和Make(常見(jiàn)于c/cpp)、Ant、Maven、Gradle(Java/Android)、Rake、Thor(Ruby)一樣,都是是Task Runner。用來(lái)將一些繁瑣的task自動(dòng)化并處理任務(wù)的依賴關(guān)系。
其中有些是基于配置描述的,描述邏輯比較費(fèi)勁,比如Ant基于xml。還有些就是代碼,比較靈活,個(gè)人偏好這種。比如Rake、Thor、Gulp、Gradle。對(duì)于Gradle來(lái)說(shuō)也有些蛋疼。因?yàn)樗旧硎荊roovy的DSL。如果要深入使用,你還得學(xué)一下Groovy語(yǔ)言。其他就好多了Rake、Thor就是寫Ruby;Gulp就是JavaScript。相對(duì)門檻低很多。
模塊化解決方案:
BrowserifyIt provides a way to bundle CommonJS modules together, adheres to the Unix philosophy(小工具協(xié)作), is in fact a good alternative to Webpack.
Webpack?takes a more monolithic(整體解決、大而全) approach than Browserify... is relies on configuration.
webpack官網(wǎng)有對(duì)二者的使用方法進(jìn)行對(duì)比,可以看一下:webpack for browserify users
上面這些工具在功能上有交集:代碼的Minify、Concat;資源預(yù)處理等;