一篇文章帶你淺入webpack的DLL優(yōu)化打包
一、前言
我們?cè)谑褂玫谌桨臅r(shí)候,一般內(nèi)部的代碼都不會(huì)變,但是當(dāng)webpack打包的時(shí)候,還是回去處理第三方包。我們是否可以利用一些方法來改進(jìn)呢?我們可以先對(duì)第三方包處理,然后再打包。
二、實(shí)戰(zhàn)
1、初始化
npm init
2、局部安裝webpack
npm i -D webpack
3、編輯package.json
加入一行代碼,方便運(yùn)行命令,
"start": "webpack --config webpack.config.js"
{
"name": "webpack_demo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack --config webpack.config.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^4.41.5"
}
}
4、創(chuàng)建index.html
<html> <head> <meta charset="UTF-8"> </head> <body> <div id="app"></div> <!--導(dǎo)入 Webpack 輸出的 JavaScript 文件--> <script src="./dist/bundle.js"></script> </body> </html>
5、創(chuàng)建main.js,引入第三方包
import $ from 'jquery'; console.log($);
6、創(chuàng)建webpack.config.js
const path = require('path');
const webpack = require('webpack');
module.exports = {
// JavaScript 執(zhí)行入口文件
entry: './main.js',
output: {
// 把所有依賴的模塊合并輸出到一個(gè) bundle.js 文件
filename: 'bundle.js',
// 輸出文件都放到 dist 目錄下
path: path.resolve(__dirname, './dist'),
},
plugins:[]
};
這樣,我們的基礎(chǔ)項(xiàng)目已經(jīng)搭建完成了,我們來打包一下。
npm run start
時(shí)間:943ms

下面,我們使用DLL優(yōu)化一下。
1、創(chuàng)建webpack.dll.js
使用插件webpack.DllPlugin
const webpack=require('webpack');
module.exports={
entry:{
vendor:['jquery'] // 第三方庫(kù)
},
output:{
path:__dirname+"/dll",
filename:'[name].dll.js',
library:'[name]_library'
},
plugins:[
new webpack.DllPlugin({
path:__dirname+'/dll/[name]-menifest.json',
name:'[name]_library'
})
]
}
2、運(yùn)行一下webpack.dll.js
編輯一下package.json,加入一行"dll": "webpack --config webpack.dll.js",方便運(yùn)行。
{
"name": "webpack_p",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack --config webpack.config.js",
"dll": "webpack --config webpack.dll.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^4.41.6",
"webpack-cli": "^3.3.11"
}
}
運(yùn)行命令
npm run dll

3、編輯webpack.config.js
使用插件webpack.DllReferencePlugin
const path = require('path');
const webpack = require('webpack');
module.exports = {
// JavaScript 執(zhí)行入口文件
entry: './main.js',
output: {
// 把所有依賴的模塊合并輸出到一個(gè) bundle.js 文件
filename: 'bundle.js',
// 輸出文件都放到 dist 目錄下
path: path.resolve(__dirname, './dist'),
},
plugins:[
new webpack.DllReferencePlugin({
manifest: require('./dll/vendor-menifest.json')
})
]
};
4、打包
npm run start
時(shí)間:473ms
優(yōu)化完畢。

三、結(jié)語(yǔ)
webpack優(yōu)化有很多,我將會(huì)不斷更新,謝謝。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Object.defineProperty實(shí)現(xiàn)簡(jiǎn)單的js雙向綁定
這篇文章主要介紹了使用Object.defineProperty實(shí)現(xiàn)簡(jiǎn)單的js雙向綁定的相關(guān)資料,需要的朋友可以參考下2016-04-04
js用正則表達(dá)式來驗(yàn)證表單(比較齊全的資源)
在學(xué)習(xí)網(wǎng)頁(yè)中的表單驗(yàn)證,順便學(xué)習(xí)下正則表達(dá)式,在網(wǎng)上找了后發(fā)現(xiàn)了一個(gè)比較齊全的資源,稍微進(jìn)行了一下排版,喜歡的朋友可以收藏2013-11-11
Javascript中匿名函數(shù)的多種調(diào)用方式總結(jié)
這篇文章主要是對(duì)Javascript中匿名函數(shù)的多種調(diào)用方式進(jìn)行了詳細(xì)的總結(jié)介紹。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12
WebRTC媒體權(quán)限申請(qǐng)getUserMedia實(shí)例詳解
這篇文章主要為大家介紹了WebRTC媒體權(quán)限申請(qǐng)getUserMedia實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
JavaScript獲取當(dāng)前頁(yè)面上的指定對(duì)象示例代碼
這篇文章主要介紹了JavaScript獲取當(dāng)前頁(yè)面上指定對(duì)象的方法,需要的朋友可以參考下2014-02-02
根據(jù)身份證號(hào)自動(dòng)輸出相關(guān)信息(籍貫,出身日期,性別)
為了減少客戶的在頁(yè)面的輸入,做了這個(gè)效果,他可以根據(jù)用戶輸入的身份證號(hào)輸出籍貫、出身日期、性別的相關(guān)信息,需要的朋友可以參考下2013-11-11
javascript實(shí)現(xiàn)動(dòng)態(tài)增加刪除表格行(兼容IE/FF)
javascript實(shí)現(xiàn)動(dòng)態(tài)增加刪除表格行(兼容IE/FF)...2007-04-04

