談談webpack 的優勢


其優勢主要可以歸類為如下幾個:

1. webpack 是以 commonJS 的形式來書寫腳本滴,但對 AMD/CMD 的支持也很全面,方便舊項目進行代碼遷移。

2. 能被模塊化的不僅僅是 JS 了。

3. 開發便捷,能替代部分 grunt/gulp 的工作,比如打包、壓縮混淆、圖片轉base64等。

4. 擴展性強,插件機制完善,特別是支持 React 熱插拔(見 react-hot-loader )的功能讓人眼前一亮。

我們談談第一點。以 AMD/CMD 模式來說,鑒於模塊是異步加載的,所以我們常規需要使用 define 函數來幫我們搞回調:

1
2
3
4
5
6
7
8
define([ 'package/lib' ], function (lib){
     function foo(){
         lib.log( 'hello world!' );
     }
     return {
         foo: foo
     };
});

另外為了可以兼容 commonJS 的寫法,我們也可以將 define 這么寫:

1
2
3
4
5
6
7
8
9
10
11
12
define( function (require, exports, module){
     var someModule = require( "someModule" );
     var anotherModule = require( "anotherModule" );   
 
     someModule.doTehAwesome();
     anotherModule.doMoarAwesome();
 
     exports.asplode = function (){
         someModule.doTehAwesome();
         anotherModule.doMoarAwesome();
     };
});

然而對 webpack 來說,我們可以直接在上面書寫 commonJS 形式的語法,無須任何 define (畢竟最終模塊都打包在一起,webpack 也會最終自動加上自己的加載器):

1
2
3
4
5
6
7
8
9
10
var someModule = require( "someModule" );
     var anotherModule = require( "anotherModule" );   
 
     someModule.doTehAwesome();
     anotherModule.doMoarAwesome();
 
     exports.asplode = function (){
         someModule.doTehAwesome();
         anotherModule.doMoarAwesome();
  };

這樣擼碼自然更簡單,跟回調神馬的說 byebye~

不過即使你保留了之前 define 的寫法也是可以滴,畢竟 webpack 的兼容性相當出色,方便你舊項目的模塊直接遷移過來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM