详解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中使用Ajax获取JSON格式数据示例代码
Nov 26 Javascript
基于iframe实现类似于ajax的页面无刷新
May 31 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
Sep 06 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
Oct 10 Javascript
超精准的javascript验证身份证号的具体实现方法
Nov 18 Javascript
Javascript删除指定元素节点的方法
Jun 21 Javascript
JavaScript实现大图轮播效果
Jan 11 Javascript
微信小程序实现全国机场索引列表
Jan 31 Javascript
vue项目中使用百度地图的方法
Jun 08 Javascript
详解VUE单页应用骨架屏方案
Jan 17 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
Jan 24 jQuery
vue+elementUI实现表格关键字筛选高亮
Oct 26 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 CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
Laravel5中contracts详解
2015/03/02 PHP
ThinkPHP使用Smarty第三方插件方法小结
2016/03/19 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
python实现用户登录系统
2016/05/21 Python
python实现简单爬虫功能的示例
2016/10/24 Python
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
python实现石头剪刀布小游戏
2021/01/20 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
python3让print输出不换行的方法
2020/08/24 Python
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
求职简历推荐信范文
2013/12/02 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
建筑工地质量标语
2014/06/12 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
先进个人申报材料
2014/12/30 职场文书
初中数学教学随笔
2015/08/15 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
日本十大血腥动漫,那些被禁播的动漫盘点
2022/03/21 日漫
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers