详解Webpack如何引入CDN链接来优化编译后的体积


Posted in Javascript onJune 21, 2019

背景

在 Vue 项目中,引入到工程中的所有 js 文件,编译时都会被打包进 vendor.js,也就导致了 vendor.js 文件体积变得相当臃肿,一定程度上影响着页面的渲染。为了减少编译后的体积,提高页面渲染速度,我们可以通过引入 CDN 链接把库分离,多线程异步 js 库,从而达到加速渲染的目的。那么我们如何做呢?

步骤

1.引入CDN链接

在项目的 index.html 中,常规方式引入 CDN 链接,此处以 vue 和 element-ui 为例:

<body>
 <div id="app"></div>
 <!-- CDN方式引入vue -->
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
 <!-- CDN方式引入element-ui -->
 <script src="https://unpkg.com/element-ui@2.8.2/lib/index.js"></script>
</body>

2.添加externals属性

Vue-cli 2

在项目的 build/webpack.base.conf.js 中,在下面合适位置添加 externals 相关语句,在 entry 后面加入即可:

module.exports = {
 context: path.resolve(__dirname, '../'),
 entry: {
 function: './src/main.js'
 },
 externals:{
 'vue': 'Vue',
 'element-ui': 'ElementUI'
 }
 ...
}

Vue-cli 3

在项目根目录的 vue.config.js 中,将 configureWebpack 配置代码块添加进入即可:

module.exports = {
 configureWebpack:{
 externals: {
  'vue': 'Vue',
  'element-ui': 'ElementUI'
 }
 }
}

注意:在上述代码中,'vue': 'Vue' 对应形式为 key : value,其中 key 为项目中引用的名称,而 value 是资源本身定义的名称(不可改),正常情况下我们可以参照 src/main.js 进行查看:

import Vue from 'vue'
import ElementUI from 'element-ui'
//打开src/main.js查阅以上两行代码,其前面作为value,后面作为key。

3.注释import及Vue.use(xxx)

在项目的 src/main.js 中,注释掉以下语句:

// import Vue from 'vue'
// import ElementUI from 'element-ui'
// import 'element-ui/lib/theme-chalk/index.css'
import App from './App'

Vue.config.productionTip = false

// Vue.use(ElementUI)

注:使用 eslint 规则的项目请不要注释 import 及 Vue.use,除非你不使用那烦人的 eslint。

完成以上步骤后就可以开始执行 npm run build,你会发现编译后的 vendor.js 从几百K降到几十K,也就意味着优化体积已经成效。 另外,有好多网友先前为了减少体积就已经配置了 按需引入,如果引入 CDN 之后,记得把按需引入的配置去掉哦,因为引入 CDN 之后就不存在按需引入这种说法啦!

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

Javascript 相关文章推荐
jquery关于图形报表的运用实现代码
Jan 06 Javascript
简单的jquery拖拽排序效果实现代码
Sep 20 Javascript
xml转json的js代码
Aug 28 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
Nov 13 Javascript
使用js写的一个简易的投票
Nov 27 Javascript
javascript获取元素离文档各边距离的方法
Feb 13 Javascript
AngularJS内建服务$location及其功能详解
Jul 01 Javascript
微信小程序 空白页重定向解决办法
Jun 27 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
Aug 09 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
Mar 01 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
May 16 Javascript
koa+jwt实现token验证与刷新功能
May 30 Javascript
Vue多环境代理配置方法思路详解
Jun 21 #Javascript
微信小程序实现卡片层叠滑动效果
Jun 21 #Javascript
使用express来代理服务的方法
Jun 21 #Javascript
react+redux仿微信聊天界面
Jun 21 #Javascript
基于jQuery的时间戳与日期间的转化
Jun 21 #jQuery
jQuery事件委托代码实践详解
Jun 21 #jQuery
Vue.js中的extend绑定节点并显示的方法
Jun 20 #Javascript
You might like
社区(php&amp;&amp;mysql)五
2006/10/09 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
JavaScript File分段上传
2016/03/10 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
Python 的 with 语句详解
2014/06/13 Python
总结Python中逻辑运算符的使用
2015/05/13 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
2019/06/18 Python
python中的decimal类型转换实例详解
2019/06/26 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
python zip()函数的使用示例
2020/09/23 Python
python PIL模块的基本使用
2020/09/29 Python
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
C#的几个面试问题
2016/05/22 面试题
IBatis持久层技术
2016/07/18 面试题
教育技术学专业职业规划书
2014/03/03 职场文书
廉政教育的心得体会
2014/09/01 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
情况说明书怎么写
2015/10/08 职场文书
高中信息技术教学反思
2016/02/16 职场文书
python库sklearn常用操作
2021/08/23 Python
如何使用python包中的sched事件调度器
2022/04/30 Python
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL