国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 14:57:44
字體:
來源:轉載
供稿:網友

Webpack 的 CommonsChunkPlugin 插件,負責將多次被使用的 JS 模塊打包在一起。

CommonsChunkPlugin 能解決的問題

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

  1. 對哪些 chunk 進行提取,這決定了 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 的代碼庫

前面我們實現了 多頁面分離資源引用,按需引用JS和css

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

方式一,傳入字符串參數

new webpack.optimize.CommonsChunkPlugin(‘common.js'), // 默認會把所有入口節點的公共代碼提取出來,生成一個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當前項目目錄)    filename:'[name].js' //最終打包生產的文件名  },  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']  // 這個模板對應上面那個節點    }),    new HtmlWebpackPlugin({      filename: __dirname+'/build/html/index-build.html',      template:__dirname+'/src/tpl/index.html',      inject:'body',      hash:true,      chunks:['index','common.js']  // 這個模板對應上面那個節點    }),    // css抽取    new extractTextPlugin("[name].css"),    // 提供公共代碼    new webpack.optimize.CommonsChunkPlugin('common.js'), // 默認會把所有入口節點的公共代碼提取出來,生成一個common.js  ]};

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

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

方式三,有選擇性的提取(對象方式傳參)

推薦

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 张家口市| 延川县| 壶关县| 彭水| 同仁县| 临泉县| 新野县| 边坝县| 商南县| 绍兴县| 白银市| 樟树市| 井陉县| 南投县| 肥城市| 兰溪市| 河南省| 泸州市| 宜春市| 长宁区| 慈溪市| 迭部县| 张掖市| 嘉鱼县| 当雄县| 玉树县| 昂仁县| 宁德市| 伊吾县| 安塞县| 新晃| 石景山区| 壤塘县| 大邑县| 霍山县| 白河县| 西乌珠穆沁旗| 晋宁县| 祥云县| 门头沟区| 德庆县|