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 选中文字并响应获取的实现代码
Aug 28 Javascript
基于jquery的滚动鼠标放大缩小图片效果
Oct 27 Javascript
jquery插件制作教程 txtHover
Aug 17 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
May 21 Javascript
原生js实现图片层叠轮播切换效果
Feb 02 Javascript
深入学习js瀑布流布局
Oct 14 Javascript
Centos7 中安装 Node.js v4.4.4
Nov 03 Javascript
利用JS做网页特效_大图轮播(实例讲解)
Aug 09 Javascript
Rollup处理并打包JS文件项目实例代码
May 31 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
Aug 08 jQuery
webpack4打包vue前端多页面项目
Sep 17 Javascript
jQuery使用bind动态绑定事件无效的处理方法
Dec 11 jQuery
对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
TMDPHP 模板引擎使用教程
2012/03/13 PHP
PHP批量生成静态HTML的简单原理和方法
2014/04/20 PHP
详谈PHP编码转换问题
2015/07/28 PHP
详解php中 === 的使用
2016/10/24 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
2018/01/25 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
JS实现分页导航效果
2020/02/19 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
浅谈JavaScript节流和防抖函数
2020/08/25 Javascript
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
2015/04/25 Python
Python打包可执行文件的方法详解
2016/09/19 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2019/12/04 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
Julep官网:美容产品和指甲油
2017/02/25 全球购物
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
运动会邀请函范文
2014/01/31 职场文书
讲党性心得体会
2014/09/03 职场文书
学习党代会心得体会
2014/09/05 职场文书
2015年考研复习计划
2015/01/19 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
2015年暑假生活总结
2015/07/13 职场文书
PHP解决高并发问题
2021/04/01 PHP
Java 异步任务计算FutureTask
2022/04/28 Java/Android