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

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 15:24:36
字體:
供稿:網(wǎng)友

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

CommonsChunkPlugin 能解決的問題

在使用插件前,考慮幾個(gè)問題:

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

以下是官方給出的常用的場(chǎng)景:

    提取兩個(gè)及兩個(gè)以上 Chunk 的公共代碼 將 Code Split 切割出來的 Chunk「就是子 Chunk」,提取到父 Chunk 將 Code Split 切割出來的 Chunk,提取到一個(gè)新的異步加載的 Chunk 提取某個(gè)類似 jquery 或 react 的代碼庫(kù)

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

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

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

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

var HtmlWebpackPlugin = require('html-webpack-plugin');var webpack = require('webpack');var extractTextPlugin = require('extract-text-webpack-plugin');module.exports = {  // entry是入口文件,可以多個(gè),代表要編譯那些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', // 輸出到那個(gè)目錄下(__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']  // 這個(gè)模板對(duì)應(yīng)上面那個(gè)節(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']  // 這個(gè)模板對(duì)應(yīng)上面那個(gè)節(jié)點(diǎn)    }),    // css抽取    new extractTextPlugin("[name].css"),    // 提供公共代碼    new webpack.optimize.CommonsChunkPlugin('common.js'), // 默認(rèn)會(huì)把所有入口節(jié)點(diǎn)的公共代碼提取出來,生成一個(gè)common.js  ]};

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

// 提供公共代碼// 默認(rèn)會(huì)把所有入口節(jié)點(diǎn)的公共代碼提取出來,生成一個(gè)common.js// 只提取main節(jié)點(diǎn)和index節(jié)點(diǎn)new webpack.optimize.CommonsChunkPlugin('common.js',['main','index']), 
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 迁西县| 瑞昌市| 泸定县| 乌海市| 蒲城县| 合水县| 尉氏县| 建德市| 治多县| 阿鲁科尔沁旗| 宝清县| 阿克陶县| 铁岭市| 江城| 邵武市| 龙陵县| 黔西县| 武清区| 佛学| 禹州市| 无为县| 太原市| 永泰县| 亳州市| 桑植县| 游戏| 西充县| 惠州市| 平谷区| 阳谷县| 呈贡县| 通州区| 南安市| 沙湾县| 文昌市| 南江县| 云龙县| 浦东新区| 东丽区| 五莲县| 崇左市|