最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解用webpack的CommonsChunkPlugin提取公共代碼的3種方式

 更新時間:2017年11月09日 09:31:47   作者:學(xué)習(xí)筆記666  
本篇文章主要介紹了詳解用webpack的CommonsChunkPlugin提取公共代碼的3種方式,具有一定的參考價值,有興趣的可以了解一下

Webpack 的 CommonsChunkPlugin 插件,負(fù)責(zé)將多次被使用的 JS 模塊打包在一起。

CommonsChunkPlugin 能解決的問題

在使用插件前,考慮幾個問題:

  1. 對哪些 chunk 進(jìn)行提取,這決定了 chunks ,children 和 name 要怎么配置
  2. common chunk 是否異步,這決定了 async 怎么配置
  3. common chunk 的粒度,這決定了 minChunks 和 minSize 怎么配置

以下是官方給出的常用的場景:

  1. 提取兩個及兩個以上 Chunk 的公共代碼
  2. 將 Code Split 切割出來的 Chunk「就是子 Chunk」,提取到父 Chunk
  3. 將 Code Split 切割出來的 Chunk,提取到一個新的異步加載的 Chunk
  4. 提取某個類似 jquery 或 react 的代碼庫

前面我們實(shí)現(xiàn)了 多頁面分離資源引用,按需引用JS和css

但有一個問題:最后生成的3個js,都有重復(fù)代碼,我們應(yīng)該把這部分公共代碼單獨(dú)提取出來。

方式一,傳入字符串參數(shù)

new webpack.optimize.CommonsChunkPlugin(‘common.js'), // 默認(rèn)會把所有入口節(jié)點(diǎn)的公共代碼提取出來,生成一個common.js

var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack');

var extractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {
  // entry是入口文件,可以多個,代表要編譯那些js
  //entry:['./src/main.js','./src/login.js','./src/reg.js'],

  entry:
  {
    'main':'./src/main.js',
    'user':['./src/login.js','./src/reg.js'],
    'index':['./src/index.js']
  },

  externals:{
    'jquery':'jQuery'
  },

  module:{
    loaders:[
      // {test:/\.css$/,loader:'style-loader!css-loader'},
      {test:/\.css$/,loader:extractTextPlugin.extract('style','css')}
    ],
  },

  output:{
    path: __dirname+'/build/js', // 輸出到那個目錄下(__dirname當(dāng)前項(xiàng)目目錄)
    filename:'[name].js' //最終打包生產(chǎn)的文件名
  },

  plugins:[
    new HtmlWebpackPlugin({
      filename: __dirname+'/build/html/login-build.html',
      template:__dirname+'/src/tpl/login.html',
      inject:'body',
      hash:true,
      chunks:['main','user','common.js']  // 這個模板對應(yīng)上面那個節(jié)點(diǎn)
    }),

    new HtmlWebpackPlugin({
      filename: __dirname+'/build/html/index-build.html',
      template:__dirname+'/src/tpl/index.html',
      inject:'body',
      hash:true,
      chunks:['index','common.js']  // 這個模板對應(yīng)上面那個節(jié)點(diǎn)
    }),

    // css抽取
    new extractTextPlugin("[name].css"),

    // 提供公共代碼
    new webpack.optimize.CommonsChunkPlugin('common.js'), // 默認(rèn)會把所有入口節(jié)點(diǎn)的公共代碼提取出來,生成一個common.js
  ]
};

方式二,有選擇的提取公共代碼

// 提供公共代碼
// 默認(rèn)會把所有入口節(jié)點(diǎn)的公共代碼提取出來,生成一個common.js
// 只提取main節(jié)點(diǎn)和index節(jié)點(diǎn)
new webpack.optimize.CommonsChunkPlugin('common.js',['main','index']), 

方式三,有選擇性的提?。▽ο蠓绞絺鲄ⅲ?

推薦

    new webpack.optimize.CommonsChunkPlugin({
      name:'common', // 注意不要.js后綴
      chunks:['main','user','index']
    }),

通過CommonsChunkPlugin,我們把公共代碼專門抽取到一個common.js,這樣業(yè)務(wù)代碼只在index.js,main.js,user.js

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用JavaScript創(chuàng)建一個兔年春節(jié)倒數(shù)計時器

    利用JavaScript創(chuàng)建一個兔年春節(jié)倒數(shù)計時器

    這篇文章主要介紹了如何利用JavaScript創(chuàng)建一個兔年春節(jié)倒數(shù)計時器,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)JavaScript有一定的幫助,需要的可以參考一下
    2023-01-01
  • 微信小程序音頻錄制波紋循環(huán)動畫

    微信小程序音頻錄制波紋循環(huán)動畫

    這篇文章主要為大家詳細(xì)介紹了微信小程序音頻錄制波紋循環(huán)動畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • JavaScript中防抖和節(jié)流的實(shí)戰(zhàn)應(yīng)用記錄

    JavaScript中防抖和節(jié)流的實(shí)戰(zhàn)應(yīng)用記錄

    防抖與節(jié)流都是用來限制用戶頻發(fā)觸發(fā)事件的機(jī)制,下面這篇文章主要給大家介紹了關(guān)于JavaScript中防抖和節(jié)流的實(shí)戰(zhàn)應(yīng)用,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • JS正則表達(dá)式常見用法實(shí)例詳解

    JS正則表達(dá)式常見用法實(shí)例詳解

    這篇文章主要介紹了JS正則表達(dá)式常見用法,結(jié)合實(shí)例形式分析了javascript元字符、分組符、修飾符、量詞基本含義,并結(jié)合具體案例形式分析了javascript正則基本使用技巧,需要的朋友可以參考下
    2018-06-06
  • js?通過Object.defineProperty()?定義和控制對象屬性

    js?通過Object.defineProperty()?定義和控制對象屬性

    這篇文章主要介紹了js?通過Object.defineProperty()?定義和控制對象屬性,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • JavaScript技巧44招【實(shí)用】

    JavaScript技巧44招【實(shí)用】

    JavaScript是一個絕冠全球的編程語言,可用于Web開發(fā)、移動應(yīng)用開發(fā)(PhoneGap、Appcelerator)、服務(wù)器端開發(fā)(Node.js和Wakanda)等等。本文主要介紹JavaScript應(yīng)用的一些小技巧。
    2016-12-12
  • nodejs 后綴名判斷限制代碼

    nodejs 后綴名判斷限制代碼

    如一個文件上傳功能,需要對上傳文件進(jìn)行文件格式限制。我們通常會使用后綴名做限制。
    2011-03-03
  • JavaScript中跨域問題的深入理解

    JavaScript中跨域問題的深入理解

    這篇文章主要給大家介紹了關(guān)于JavaScript中跨域問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 7個去偽存真的JavaScript面試題

    7個去偽存真的JavaScript面試題

    這篇文章主要為大家分享了7個去偽存真的JavaScript面試題,希望本文可以幫助大家比較順利的通過面試,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 小程序統(tǒng)計來源信息的方案與具體代碼

    小程序統(tǒng)計來源信息的方案與具體代碼

    微信小程序數(shù)據(jù)統(tǒng)計,現(xiàn)在有很多的統(tǒng)計方法和統(tǒng)計工具,下面這篇文章主要給大家介紹了關(guān)于小程序統(tǒng)計來源信息的方案與具體代碼,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09

最新評論

建平县| 临江市| 兰州市| 吉林市| 峡江县| 曲阳县| 房产| 营山县| 虞城县| 清水河县| 永靖县| 洪泽县| 建平县| 内黄县| 江城| 杨浦区| 泾川县| 新巴尔虎右旗| 灵宝市| 勐海县| 石屏县| 阳城县| 新安县| 马公市| 青海省| 承德市| 武定县| 灌云县| 花莲市| 鄂尔多斯市| 屯门区| 全州县| 百色市| 榆林市| 湖北省| 五大连池市| 双柏县| 泸溪县| 岢岚县| 沧州市| 大名县|