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 相关文章推荐
jquery的颜色选择插件实例代码
Oct 02 Javascript
JSON.parse 解析字符串出错的解决方法
Jul 08 Javascript
JavaScript学习笔记之内置对象
Jan 22 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
Jul 27 Javascript
jQuery实现文本框邮箱输入自动补全效果
Nov 17 Javascript
jQuery简单实现中间浮窗效果
Sep 04 Javascript
Vue.js开发环境快速搭建教程
Mar 17 Javascript
vue better-scroll插件使用详解
Jan 25 Javascript
微信小程序 如何引入外部字体库iconfont的图标
Jan 31 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
Nov 01 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
Sep 21 Javascript
Ajax常用封装库——Axios的使用
May 08 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
基于mysql的bbs设计(二)
2006/10/09 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
表单提交验证类
2006/07/14 Javascript
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
js实现select选择框效果及美化
2016/08/19 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
Python实现简单HTML表格解析的方法
2015/06/15 Python
Python的迭代器和生成器
2015/07/29 Python
Python中pygame安装方法图文详解
2015/11/11 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
python函数的作用域及关键字详解
2019/08/20 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
Python如何测试stdout输出
2020/08/10 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
副科级后备干部考察材料
2014/05/15 职场文书
销售目标责任书
2014/07/23 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
主持人开幕词
2015/01/29 职场文书
Golang ort 中的sortInts 方法
2022/04/24 Golang
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android