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 相关文章推荐
javascript数组使用调用方法汇总
Dec 08 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
Nov 21 Javascript
jQuery 和 CSS 的文本特效插件集锦
Dec 12 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
Jul 20 Javascript
jQuery实现的瀑布流加载效果示例
Sep 13 Javascript
数组Array的一些方法(总结)
Feb 17 Javascript
Node.js 8 中的 util.promisify的详解
Jun 12 Javascript
原生js二级联动效果
Jun 20 Javascript
JSONP原理及应用实例详解
Sep 13 Javascript
vue的列表交错过渡实现代码示例
May 05 Javascript
vue axios重复点击取消上一次请求封装的方法
Jun 19 Javascript
openlayers4.6.5实现距离量测和面积量测
Sep 25 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
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
javascript读取xml
2006/11/04 Javascript
任意位置显示html菜单
2007/02/01 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
js获取域名的方法
2015/01/27 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
手机端转换rem适应
2017/04/01 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
详解Angular操作cookies方法
2018/06/01 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
学习node.js 断言的使用详解
2019/03/18 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
python的类变量和成员变量用法实例教程
2014/08/25 Python
Python实现自动发送邮件功能
2021/03/02 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
django表单的Widgets使用详解
2019/07/22 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
中国最大隐形眼镜网上商城:视客眼镜网
2016/10/30 全球购物
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
问卷调查计划书
2014/01/10 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
母亲节主题班会
2015/08/14 职场文书
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS