使用vue-cli开发vue web app,首先考虑的是线上环境的打包部署,一开始以为无论多少个界面,只会打出一个超级大的JS,首次请求的时候巨慢无比。
后来发现我错了,vue可以借助webpack,N个界面,可以打出对应的N个JS,按需加载。
这个好,符合我的性能观点,按需加载。
运行npm run build进行打包,会打出N+3个JS文件,如下图:
上图的0-2,是指我这个项目,共有3个路由界面,对应的3个业务js
- app.js,是我们项目的公用JS代码,入口就是
main.js,这个公用代码,就是指除了在node_moudles公用包之外的公用代码。
打出的另外两个JS,分别是vendor.js、manifest.js
vendor.js是从node_modules包中提取的公用的JS代码库,与app.js不同,这个里面无业务JS。manifest.js是个索引文件,不同的界面,通过manifest.js文件,调用上面0-2的业务JS。
这个跟我们之前的生产环境JS部署很类似
乐视网最早之前的JS部署,每个界面如下:
abc.js,是一个索引文件,代码如下:
|
|
__loadjs根据传入的字符串,同步加载cdn上的JS。
后来我觉得这个的话,每个界面的JS都不一致,像jquery那种大而且公用的代码,都被打到不同的JS里面,无法做缓存。
如上是我改进后的,多了一个header.js,里面存了一些公用的JS,包括jquery、ajax url配置、常用工具类等JS,__loadjs,只加载自己界面的业务JS。
这样的好处,是将一个比较大的header.js,在请求完一次,都304缓存起来,减少了请求
由此看来,
abc.js=manifest.jsheader.js=vendor.js+app.js
异曲同工之妙啊!