详解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 相关文章推荐
javascript之更有效率的字符串替换
Aug 02 Javascript
asp.net HttpHandler实现图片防盗链
Nov 09 Javascript
$.ajax返回的JSON无法执行success的解决方法
Sep 09 Javascript
offsetHeight在OnLoad中获取为0的现象
Jul 22 Javascript
jquery+CSS3实现3D拖拽相册效果
Jul 18 Javascript
jquery实用技巧之输入框提示语句
Jul 28 Javascript
js控住DOM实现发布微博效果
Aug 30 Javascript
AngularJs定时器$interval 和 $timeout详解
May 25 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
Jul 07 Javascript
vue 基于element-ui 分页组件封装的实例代码
Dec 10 Javascript
详解Vue数据驱动原理
Nov 17 Javascript
WebRTC记录音视频流(web技术分享)
Feb 24 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
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
python练习程序批量修改文件名
2014/01/16 Python
python海龟绘图实例教程
2014/07/24 Python
Python numpy 点数组去重的实例
2018/04/18 Python
解决python 输出是省略号的问题
2018/04/19 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
PHP面试题及答案一
2012/06/18 面试题
优秀经理事迹材料
2014/02/01 职场文书
学习决心书范文
2014/03/11 职场文书
教师年度考核评语
2014/04/28 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
关于拾金不昧的感谢信
2015/01/21 职场文书
电影复兴之路观后感
2015/06/02 职场文书
导游词之南京中山陵
2019/11/27 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers
python实战之90行代码写个猜数字游戏
2021/04/22 Python