详解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 相关文章推荐
浅谈Javascript事件处理程序的几种方式
Jun 27 Javascript
前台js调用后台方法示例
Dec 02 Javascript
跟我学习javascript的this关键字
May 28 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
Feb 19 Javascript
浅析Angular2子模块以及异步加载
Apr 24 Javascript
Angular.JS中指令ng-if的注意事项小结
Jun 21 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
Feb 08 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
May 16 Javascript
微信小程序实现简单评论功能
Nov 28 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
Apr 25 Javascript
浅谈如何优雅处理JavaScript异步错误
Nov 12 Javascript
JavaScript实现网页跨年倒计时
Dec 02 Javascript
利用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 STRING 陷阱原理说明
2010/07/24 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
javascript操作cookie
2017/01/17 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
js实现方块上下左右移动效果
2017/08/17 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
Python可变参数函数用法实例
2015/07/07 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
Python的条件锁与事件共享详解
2019/09/12 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
Django自定义全局403、404、500错误页面的示例代码
2020/03/08 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
解除劳动合同协议书范本
2014/04/14 职场文书
关于中国梦的演讲稿
2014/04/23 职场文书
卫校毕业生个人自我鉴定
2014/04/28 职场文书
党员目标管理责任书
2014/07/25 职场文书
学生党员检讨书范文
2014/12/27 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书