Vue项目使用CDN优化首屏加载问题


Posted in Javascript onApril 01, 2018

前言

作为一个网站应用,加载速度是非常重要的。加载速度,一个是程序的合理安排,如以组件按需加载,一个是js、css等资源的异步加载。

在Vue项目中,引入到工程中的所有js、css文件,编译时都会被打包进vendor.js,浏览器在加载该文件之后才能开始显示首屏。若是引入的库众多,那么vendor.js文件体积将会相当的大,影响首开的体验。

解决方法是,将引用的外部js、css文件剥离开来,不编译到vendor.js中,而是用资源的形式引用,这样浏览器可以使用多个线程异步将vendor.js、外部的js等加载下来,达到加速首开的目的。

外部的库文件,可以使用CDN资源,或者别的服务器资源等。

下面,以引入vue、vuex、vue-router为例,说明处理流程。

一、资源引入

在index.html中,添加CDN资源,例如bootstrap:

<body>
  <div id="app"></div>

  <script src="https://cdn.bootcss.com/vue/2.5.2/vue.min.js"></script>
  <script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>
  <script src="https://cdn.bootcss.com/vuex/3.0.1/vuex.min.js"></script>
 </body>

二、添加配置

在bulid/webpack.base.conf.js文件中,增加externals,将引用的外部模块导入,如下:

module.exports = {
 entry: {
  app: './src/main.js'
 },
 externals:{
  'vue': 'Vue',
  'vue-router': 'VueRouter',
  'vuex':'Vuex'
 }

注意一点:

格式为 'aaa' : 'bbb', 其中,aaa表示要引入的资源的名字,bbb表示该模块提供给外部引用的名字,由对应的库自定。例如,vue为Vue,vue-router为VueRouter.

三、去掉原有的引用

去掉import,如:

// import Vue from 'vue'
// import Router from 'vue-router'

去掉Vue.use(XXX),如:

// Vue.use(Router)

测试

重新npm run build,会看到 vendor.js体积有所下降了。通过开发者模式的Network工具,可以看到vue.js、vuex.js、vendor.js等文件会分别由一个线程进行加载。且因为使用了CDN,加载速度比自已的服务器更快。

总结

Javascript 相关文章推荐
js验证电话号码与手机支持+86的正则表达式
Jan 23 Javascript
html dom节点操作(获取/修改/添加或删除)
Jan 23 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
Sep 28 Javascript
js生成随机数的方法实例
Oct 16 Javascript
javascript实现可键盘控制的抽奖系统
Mar 10 Javascript
AngularJS中的过滤器filter用法完全解析
Apr 22 Javascript
Bootstrap实现弹性搜索框
Jul 11 Javascript
全面了解addEventListener和on的区别
Jul 14 Javascript
巧用数组制作图片切换js代码
Nov 29 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
Jul 10 Javascript
基于webpack4+vue-cli3项目实现换肤功能
Jul 17 Javascript
详解JavaScript作用域、作用域链和闭包的用法
Sep 03 Javascript
对Angular中单向数据流的深入理解
Mar 31 #Javascript
jQuery中复合选择器简单用法示例
Mar 31 #jQuery
jQuery中内容过滤器简单用法示例
Mar 31 #jQuery
jQuery中可见性过滤器简单用法示例
Mar 31 #jQuery
Postman模拟发送带token的请求方法
Mar 31 #Javascript
浅谈Postman解决token传参的问题
Mar 31 #Javascript
postman+json+springmvc测试批量添加实例
Mar 31 #Javascript
You might like
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
PHP简单日历实现方法
2016/07/20 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
Laravel 简单实现Ajax滚动加载示例
2019/10/22 PHP
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
javascript常用的方法整理
2015/08/20 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
mui js控制开关状态、修改switch开关的值方法
2019/09/03 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
python序列类型种类详解
2020/02/26 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
大学新生军训方案
2014/05/03 职场文书
销售竞赛活动方案
2014/08/23 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
助学感谢信范文
2015/01/21 职场文书
法人代表证明书范本
2015/06/18 职场文书
java代码实现空间切割
2022/01/18 Java/Android