详解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 相关文章推荐
JS location几个方法小姐
Jul 09 Javascript
Javascript 中 null、NaN和undefined的区别总结
Apr 10 Javascript
自定义的一个简单时尚js下拉选择框
Nov 20 Javascript
jquery如何获取复选框的值
Dec 12 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
Jul 02 Javascript
js实现点击添加一个input节点
Dec 05 Javascript
一张Web前端的思维导图分享
Jul 03 Javascript
BootStrap中Datepicker控件带中文的js文件
Aug 10 Javascript
JS实现鼠标移上去显示图片或微信二维码
Dec 14 Javascript
JS栈stack类的实现与使用方法示例
Jan 31 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
Sep 11 Javascript
详解用js代码触发dom事件的实现方案
Jun 10 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自定义Redis处理SESSION的实现方法
2016/05/16 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
Javascript动态绑定事件的简单实现代码
2010/12/25 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
2017/01/21 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
Django 重写用户模型的实现
2019/07/29 Python
详解Python文件修改的两种方式
2019/08/22 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
开业庆典答谢词
2014/01/18 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
购房意向书
2014/08/30 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
2016年元旦主持词
2015/07/06 职场文书
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers