成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

webpack2.x 中文文檔 翻譯 之 分離庫代碼Code Splitting - Librari

elva / 2780人閱讀

摘要:瀏覽器需要重新下載打包后的文件,即使文件的絕大部分都沒有變化。分離并且以來命名新的入口能夠緩和當(dāng)前的問題?,F(xiàn)在運(yùn)行綁定的檢查結(jié)果是只是被綁定到這個綁定文件中。

分離庫代碼Code Splitting - Libraries

這個在webpack2.x中文網(wǎng)已存在,點(diǎn)擊這里

讓我們想一個簡單的應(yīng)用——momentjs,他是一個事件格式化的庫。
安裝moment.

npm install --save moment

index文件將調(diào)用moment作為依賴來記錄現(xiàn)在時間。

index.js
var moment = require("moment");
console.log(moment().format());

我們可以用下面的配置來打包應(yīng)用。

webpack.config.js
module.exports = function(env) {
    return {
        entry: "./index.js",
        output: {
            filename: "[chunkhash].[name].js`,
            path: "./dist"
        }
    }
}

在你的應(yīng)用中運(yùn)行webpack,然后檢查打包的結(jié)果,你會發(fā)現(xiàn)momentindex.js被打包合并到bundle.js中了。

對于應(yīng)用來說這不是我們想要的。如果index.js代碼放生了變化,整個bundle.js需要重新打包一遍。瀏覽器需要重新下載打包后的文件,即使文件的絕大部分都沒有變化。

mutilple Entries 多個文件入口。

分離moment并且以vendor來命名新的入口能夠緩和當(dāng)前的問題。

webpack.config.js webpack配置
module.exports = function(env) {
    return {
        entry: {
            main: "./index.js",
            vendor: "moment"
        },
        output: {
            filename: "[chunkhash].[name].js`,
            path: "./dist"
        }
    }
}

運(yùn)行webpack,你會發(fā)現(xiàn)兩個被打包的文件被輸出。如果你檢查的話會發(fā)現(xiàn),moment在這兩個文件中都存在。

CommonsChunkPlugin

這是一個非常復(fù)雜的插件。他的重要功能從不同的bundle文件中摘除相同的模塊,然后綁定到一個bundle文件中。
如果一個公共bundle文件不存在,那么就會創(chuàng)建一個。

我們可如下修改配置文件來使用CommonsChunkPlugin插件。

var webpack = require("webpack");
module.exports = function(env) {
    return {
        entry: {
            main: "./index.js",
            vendor: "moment"
        },v
        output: {
            filename: "[chunkhash].[name].js`,
            path: "./dist"
        },
        plugins: [
            new webpack.optimize.CommonsChunkPlugin({
                name: "vendor" // Specify the common bundle"s name.
            })
        ]
    }
}

現(xiàn)在運(yùn)行webpack,綁定的檢查結(jié)果是moment只是被綁定到vendor這個綁定文件中。

Manifest file(證明文件)

應(yīng)該注意到,如果我們改變應(yīng)用的代碼,然后運(yùn)行webapck,將會發(fā)現(xiàn)vendor綁定文件的也發(fā)生了變化。
即使vendormain兩個綁定的問價是分開執(zhí)行綁定的,一個變化另一個沒有變化會導(dǎo)致兩個文件的hash
都發(fā)生變化。這說明我們還是沒有獲得瀏覽器緩存文件的好處,因?yàn)槲募膆ash導(dǎo)致名字都發(fā)生了變化。因此他們都會重新下載。

這種問題會出現(xiàn)每次buil的時候。webpack生成一些webpack運(yùn)行碼,它幫助webpack做它的事。當(dāng)只有一個
bundle綁定文件時,運(yùn)行碼在他的內(nèi)部。但是有多個bundle被生成時,他在common build中,也就是vendor文件中。

為了解決這個問題,我們需要摘出來一個文件專門存放運(yùn)行碼,這個文件是mainifest file。通過每次創(chuàng)建一個其他的文件--manifest,在它的前面是一大堆我們需要緩存的文件,在vendor中。

webpack.config.js
var webpack = require("webpack");
module.exports = function(env) {
    return {
        entry: {
            main: "./index.js",
            vendor: "moment"
        },
        output: {
            filename: "[chunkhash].[name].js`,
            path: "./dist"
        },
        plugins: [
            new webpack.optimize.CommonsChunkPlugin({
                names: ["vendor", "manifest"] // Specify the common bundle"s name.
            })
        ]
    }
};

通過上面的配置,我們可以看到三個bundle被生成,vendor,main以及manifestbundle。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/81861.html

相關(guān)文章

  • webpack2.x 代碼分離文檔 翻譯

    摘要:代碼分離代碼分離是最受矚目的功能。下面有兩種代碼分離的技術(shù)。使用實(shí)現(xiàn)代碼分離是使用的方式實(shí)現(xiàn)靜待資源異步調(diào)用。通過添加,我們可以在代碼中打一個分離點(diǎn),可以以此建立一個獨(dú)立的包,包含這個點(diǎn)的所有代碼。 代碼分離(Code Splitting) 代碼分離是webpack最受矚目的功能。它允許你把你的代碼分成不同的部分分開打包,然后實(shí)現(xiàn)在需要的時候再進(jìn)行加載(按需加載提高速度)————例如用...

    Scott 評論0 收藏0
  • 代碼分離-import() webpack2.x 中文文檔 翻譯

    摘要:代碼分離使用中文文檔地址點(diǎn)擊這里動態(tài)導(dǎo)入目前,類函模塊加載的語法建議整體交給。在中的是個分離點(diǎn),用來把被請求的模塊獨(dú)立成一個單獨(dú)的模塊。被替代因?yàn)樵谥惺褂靡呀?jīng)不合建議規(guī)范,因此將在版本中啟用。 代碼分離-使用import() 中文文檔地址點(diǎn)擊這里 動態(tài)導(dǎo)入 目前,類函模import()塊加載的語法建議——syntax proposal整體交給ECMAScript。ES2015(es6)...

    jaysun 評論0 收藏0
  • webpack2.x 中文文檔 翻譯 依賴管理 Dependency Management

    摘要:依賴管理該條已在中文網(wǎng)存在,點(diǎn)擊這里表達(dá)式來調(diào)用當(dāng)你的請求包含表達(dá)式,那個一個上下文環(huán)境將被創(chuàng)建。一個包含所有父文件夾和子及后代文件夾中以結(jié)尾的文件的上下文。一個函數(shù),返回一個數(shù)組,包含上下文模塊能夠處理的所有的請求。 依賴管理 Dependency Management 該條已在webpack2.x中文網(wǎng)存在,點(diǎn)擊這里 es6 modules commonjs amd 表達(dá)式...

    raledong 評論0 收藏0
  • webpack2.x 中文文檔 翻譯 公開路徑(pbulic path)

    摘要:公開路徑該條已在中文網(wǎng)存在點(diǎn)擊這里有一個非常有用的設(shè)置,允許你設(shè)置一個所有資源的基礎(chǔ)路徑在你的應(yīng)用中。使用案例這里有有些實(shí)際應(yīng)用中的案例,其中它使用的非常靈活。 公開路徑(pbulic path) 該條已在webpack2.x中文網(wǎng)存在,點(diǎn)擊這里 webpack有一個非常有用的設(shè)置,允許你設(shè)置一個所有資源的基礎(chǔ)路徑在你的應(yīng)用中。它叫做publicPath。 使用案例(Use cases...

    W4n9Hu1 評論0 收藏0
  • webpack2.x 中文文檔 翻譯 出口Output

    摘要:出口影響編譯的輸出告訴怎樣編譯輸出的文件允許多個入口一個出口的情況。該選項(xiàng)實(shí)現(xiàn)跨域加載模塊可以的值是命名每個出口文件。不必明確絕對路徑。使用設(shè)置項(xiàng),設(shè)置具體位置。僅僅命名文件名字即可。 出口Output 影響編譯的輸出告訴webpack怎樣編譯輸出的文件允許多個入口一個出口的情況。 用法 const config = { output: bundle.js }; module.e...

    weizx 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<