详解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 相关文章推荐
实现png图片和png背景透明(支持多浏览器)的方法
Sep 08 Javascript
javascript获取xml节点的最大值(实现代码)
Dec 11 Javascript
checkbox勾选判断代码分析
Jun 11 Javascript
jquery.ajax之beforeSend方法使用介绍
Dec 08 Javascript
JS实现的不规则TAB选项卡效果代码
Sep 18 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
Oct 09 Javascript
原生JS实现平滑回到顶部组件
Mar 16 Javascript
jQuery+CSS3实现点赞功能
Mar 13 Javascript
jQuery读取本地的json文件(实例讲解)
Oct 31 jQuery
一个因@click.stop引发的bug的解决
Jan 08 Javascript
详细分析JavaScript中的深浅拷贝
Sep 17 Javascript
vue实现滚动鼠标滚轮切换页面
Dec 13 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实现memcache缓存示例讲解
2013/12/04 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
react build 后打包发布总结
2018/08/24 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
Python实现打印螺旋矩阵功能的方法
2017/11/21 Python
Django中的Signal代码详解
2018/02/05 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
如何基于Python实现数字类型转换
2020/02/07 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
编辑硕士自荐信范文
2013/11/27 职场文书
财务信息服务专业自荐书范文
2014/02/08 职场文书
总经理任命书
2014/03/29 职场文书
责任胜于能力演讲稿
2014/05/20 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
个人委托函范文
2015/01/29 职场文书
小学母亲节活动总结
2015/02/10 职场文书
业务员岗位职责范本
2015/04/03 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL