详解webpack提取第三方库的正确姿势


Posted in Javascript onDecember 22, 2017

我们在用webpack打包是时候,常常想单独提取第三方库,把它作为稳定版本的文件,利用浏览缓存减少请求次数。常用的提取第三方库的方法有两种

  1. CommonsChunkPlugin
  2. DLLPlugin

区别:第一种每次打包,都要把第三方库也运行打包一次,第二种方法每次打包只打包项目文件,我们只要引用第一次打包好的第三方压缩文件就行了

CommonsChunkPlugin方法简介

我们拿vue举例

const vue = require('vue')
{
 entry: {
 // bundle是我们要打包的项目文件的导出名字, app是入口js文件
 bundle: 'app',
 // vendor就是我们要打包的第三方库最终生成的文件名,数组里是要打包哪些第三方库, 如果不是在node——modules里面,可以填写库的具体地址
 vendor: ['vue']
 },
 output: {
  path: __dirname + '/bulid/',
 // 文件名称
 filename: '[name].js'
 },
 plugins: {
 // 这里实例化webpack.optimize.CommonsChunkPlugin构造函数
 // 打包之后就生成vendor.js文件
 new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js')
 }
}

然后打包生成的文件引入到html文件里面

<script src="/build/vendor.js"></script>
 <script src="/build/bundle.js"></script>

DLLPlugin方法简介

首先准备两个文件

  1. webpack.config.js
  2. webpack.dll.config.js

webpack.dll.config.js文件配置如下

const webpack = require('webpack')
const library = '[name]_lib'
const path = require('path')

module.exports = {
 entry: {
 vendors: ['vue', 'vuex']
 },

 output: {
 filename: '[name].dll.js',
 path: 'dist/',
 library
 },

 plugins: [
 new webpack.DllPlugin({
  path: path.join(__dirname, 'dist/[name]-manifest.json'),
  // This must match the output.library option above
  name: library
 }),
 ],
}

然后webpack.config.js 文件配置如下

const webpack = require('webpack')

module.exports = {
 entry: {
 app: './src/index'
 },
 output: {
 filename: 'app.bundle.js',
 path: 'dist/',
 },
 plugins: [
 new webpack.DllReferencePlugin({
  context: __dirname,
  manifest: require('./dist/vendors-manifest.json')
 })
 ]
}

然后运行

$ webpack --config webpack.dll.config.js
$ webpack --config webpack.config.js

html引用方式

<script src="/dist/vendors.dll.js"></script>
<script src="/dist/app.bundle.js"></script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
Mar 10 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
Jan 22 Javascript
实现点击列表弹出列表索引的两种方式
Mar 08 Javascript
jquery实现excel导出的方法
Apr 04 Javascript
基于KMP算法JavaScript的实现方法分析
May 03 Javascript
js实现异步循环实现代码
Feb 16 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
May 10 Javascript
Bootstrap三种表单布局的使用方法
Jun 21 Javascript
Bootstrap和Java分页实例第一篇
Dec 23 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
May 02 Javascript
详解Angular CLI + Electron 开发环境搭建
Jul 20 Javascript
jQuery事件多次绑定与解绑问题实例分析
Feb 19 jQuery
利用JS判断客户端类型你应该知道的四种方法
Dec 22 #Javascript
JavaScript伪数组用法实例分析
Dec 22 #Javascript
JavaScript中Object值合并方法详解
Dec 22 #Javascript
Angular简单验证功能示例
Dec 22 #Javascript
Angular实现的table表格排序功能完整示例
Dec 22 #Javascript
详解Vue中localstorage和sessionstorage的使用
Dec 22 #Javascript
vue + element-ui实现简洁的导入导出功能
Dec 22 #Javascript
You might like
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
详细AngularJs4的图片剪裁组件的实例
2017/07/12 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
2017/12/07 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
vue获取当前激活路由的方法
2018/03/17 Javascript
vue移动端实现下拉刷新
2018/04/22 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
2020/07/17 Javascript
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
多版本Python共存的配置方法
2017/05/22 Python
Python的argparse库使用详解
2018/10/09 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
python学生管理系统开发
2019/01/30 Python
超简单的Python HTTP服务
2019/07/22 Python
Python pickle模块实现对象序列化
2019/11/22 Python
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
材料物理专业大学毕业生求职信
2013/10/15 职场文书
教师推荐信范文
2013/11/24 职场文书
医药代表个人求职信范本
2013/12/19 职场文书
心碎乌托邦的创业计划书范文
2013/12/26 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
匿名检举信范文
2015/03/02 职场文书
工商局调档介绍信
2015/10/22 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js