详解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使用数组的push方法完成快速排序
Sep 15 Javascript
javascript实现可键盘控制的抽奖系统
Mar 10 Javascript
Bootstrap BootstrapDialog使用详解
Feb 17 Javascript
node.js入门教程之querystring模块的使用方法
Feb 27 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
Jul 21 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
Oct 26 Javascript
解决Layui 表单提交数据为空的问题
Aug 15 Javascript
利用Vue实现一个markdown编辑器实例代码
May 19 Javascript
JS实现查找数组中对象的属性值是否存在示例
May 24 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
Dec 30 Javascript
node.js中npm包管理工具用法分析
Feb 14 Javascript
Vue+penlayers实现多边形绘制及展示
Dec 24 Vue.js
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(视频)Http下载
2006/12/12 PHP
php 特殊字符处理函数
2008/09/05 PHP
初识laravel5
2015/03/02 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
php 生成签名及验证签名详解
2016/10/26 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
JQuery在光标位置插入内容的实现代码
2010/06/18 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
2016/06/08 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
小程序实现tab标签页
2020/11/16 Javascript
Python中MySQL数据迁移到MongoDB脚本的方法
2016/04/28 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
小学生开学感言
2014/02/28 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
销售竞赛活动方案
2014/08/23 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
家长会开场白和结束语
2015/05/29 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书
实用干货:敬酒词大全,帮你应付各种场合
2019/11/21 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
python pyhs2 的安装操作
2021/04/07 Python