详解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 相关文章推荐
JSON.parse()和JSON.stringify()使用介绍
Jun 20 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
Aug 07 Javascript
让html页面不缓存js的实现方法
Oct 31 Javascript
js实现显示当前状态的导航效果代码
Aug 28 Javascript
jQuery实现ctrl+enter(回车)提交表单
Oct 19 Javascript
jquery中ajax跨域方法实例分析
Dec 18 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
Dec 05 Javascript
JavaScript实现隐藏省略文字效果的方法
Apr 27 Javascript
解决Jquery下拉框数据动态获取的问题
Jan 25 jQuery
基于vue-video-player自定义播放器的方法
Mar 21 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
Aug 28 Javascript
解读Vue组件注册方式
May 15 Vue.js
利用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 字符串替换的方法
2012/01/10 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
实现获取http内容的php函数分享
2014/02/16 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
JQuery Tips(4) 一些关于提高JQuery性能的Tips
2009/12/19 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
javascript实现电脑和手机版样式切换
2017/11/10 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
Python简单遍历字典及删除元素的方法
2016/09/18 Python
python 读写中文json的实例详解
2017/10/29 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
全球虚拟主机商:HostGator
2017/02/06 全球购物
经理助理岗位职责
2014/03/05 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
学校隐患排查制度
2015/08/05 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL