详解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 相关文章推荐
鼠标移动到一张图片时变为另一张图片
Dec 05 Javascript
Js 中debug方式
Feb 07 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
May 12 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
Jun 20 Javascript
JavaScript清空数组元素的两种方法简单比较
Jul 10 Javascript
javascript作用域问题实例分析
Jul 13 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
Apr 13 Javascript
javascript数字验证的实例代码(推荐)
Aug 20 Javascript
layui 优化button按钮和弹出框的方法
Aug 15 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
Sep 27 Javascript
JavaScript创建、读取和删除cookie
Sep 03 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的面向对象编程
2006/10/09 PHP
图形数字验证代码
2006/10/09 PHP
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
javascript中FOREACH数组方法使用示例
2016/03/01 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
Angular2库初探
2017/03/01 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
在小程序中推送模板消息的实现方法
2019/07/22 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
[02:35]DOTA2英雄基础教程 末日使者
2013/12/04 DOTA
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python安装教程
2018/02/28 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
澳大利亚排名第一的儿童在线玩具商店:Toy Galaxy
2018/10/06 全球购物
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
财务部绩效考核方案
2014/05/04 职场文书
给校长的建议书100字
2014/05/16 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书