问题引出
作为一个网站应用,加载速度是非常重要的。
而当程序的功能愈来愈多,引入的外部组件资源愈来愈多,打包后的js包,就会愈来愈大。
在开发环境下可能感觉不到,因为一开始dev的时候就已经把所有资源的都加载进来了,
而当生成环境时,部署到服务器之后,访问程序你会发现,网址敲下后,到网站应用的首页完整呈现在浏览器之间,耗费了大量的时间,
我们称该阶段为首屏加载
首屏加载速度过慢,无疑会消费用户访问该应用的耐心,甚至导致用户之间关闭还未打开的网站。
说到提升加载速度,一般更多的是想到两个方面
- 一是vue-router进行页面的懒加载
- 一是引入CDN资源js、css等的异步加载。
当然还有很多其他的方式,图片压缩,gzip压缩等等(暂不去说服务器带宽)
解决方案
引入CDN资源的异步加载原理:
将引用的外部js、css文件剥离开来,不编译到vendor.js中,而是用资源的形式引用,这样浏览器可以使用多个线程异步将vendor.js、外部的js等加载下来,达到加速首开的目的。
主页面文件引入
1 | ... |
注:外部的库文件,可以使用CDN资源,也可以是别的服务器资源等
我上面引入的资源是针对我最近开发的项目的,你的引入针对自己的项目而定。
在这里我有些使用了bootstrap上的资源,而element-ui我没找到对应的,所有用了unpkg.com上的
两个平台分别是:
配置
加了上面的代码是不够了,这样之间打包反而会报错。
在bulid/webpack.base.conf.js文件中,增加externals,将引用的外部模块导入
1 | externals:{ |
注意对应的字段名,不是乱写的,若有其他的引入资源,可自行查找对应的字段名。
注释
其实这样就可以了的,可我之前了解这方面知识的时候,看了很多网友写的,做完前面两步,还得注释掉之前的引入
1 | // import Vue from 'vue' |
其实这也一步是为了在开发环境下也用cdn方式引入,但我最近开发的程序不方面这么做,故没有做这一步,有需求的朋友可以加上。
注意
1.注意我上面的做法只是针对生产环境,即在开发环境下,要注释掉,当然有些网友也会说在开一个index.html,分生产环境和开发环境,省得去注释了,可我目前懒得弄 /笑哭
2.注:vue.js引用会带来一些问题,element若要以这种方式引入的话,Vue已应当以这种方式引入,否则无效甚至报错。