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 相关文章推荐
Javacript实现颜色梯度变化和渐变的效果代码
May 31 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 Javascript
Javascript基础教程之数据类型 (字符串 String)
Jan 18 Javascript
Javascript 实现计算器时间功能详解及实例(二)
Jan 08 Javascript
js仿QQ邮箱收件人选择与搜索功能
Feb 10 Javascript
vue2.0结合Element实现select动态控制input禁用实例
May 12 Javascript
elementUI 设置input的只读或禁用的方法
Oct 30 Javascript
微信小程序使用二次贝塞尔曲线画波浪
Dec 25 Javascript
jquery分页优化操作实例分析
Aug 23 jQuery
JavaScript原型式继承实现方法
Nov 06 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
Feb 14 Javascript
基于Vant UI框架实现时间段选择器
Dec 24 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
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
php强制下载类型的实现代码
2011/04/21 PHP
php学习之数据类型之间的转换介绍
2011/06/09 PHP
php实现Session存储到Redis
2015/11/11 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
2014/12/31 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
Three.js学习之网格
2016/08/10 Javascript
JS查找字符串中出现最多的字符及个数统计
2017/02/04 Javascript
JS验证字符串功能
2017/02/22 Javascript
Vue 进阶教程之v-model详解
2017/05/06 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
python中pika模块问题的深入探究
2018/10/13 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
东南亚地区最大的购物网站Lazada新加坡站点:Lazada.sg
2016/07/17 全球购物
一道输出判断型Java面试题
2014/10/01 面试题
银行实习自我鉴定
2013/10/12 职场文书
社区学习十八大感想
2014/01/22 职场文书
优秀交警事迹材料
2014/01/26 职场文书
中职招生先进个人材料
2014/08/31 职场文书
员工评语范文
2014/12/31 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
公司回复函格式
2015/07/14 职场文书