本文最后更新于:2022年12月19日 晚上
最近部署了一个Vue项目,但在测试时发现打开首页后,会花费很久的时间去加载CSS和JS文件,打开需要10s+。 所以寻找了一些优化方法。
一、Vue router懒加载
懒加载前:
1 2 3 4
| import Login from "../components/Login.vue" const routes = [ { path: '/login', component: Login, meta: { title: '登录' },} ]
|
修改为懒加载后:
1 2 3 4
| const Login = () => import('../components/Login.vue') const routes = [ { path: '/login', component: Login, meta: { title: '登录' },} ]
|
这种方法虽然可以把CSS和JS文件打包为很多个,但是vender文件依然很大。
懒加载方法比较适用于部分非首页页面过大的问题。
二、组件CDN加载
我的项目使用了Vue + element等。 如果把这些组件通过CDN加载,而不是打包为项目的文件,将会大大减小vender文件大小。
1、在vue.config.js中设置
1 2 3 4 5 6 7 8 9 10
| module.exports = { configureWebpack: { externals: { 'vue': 'Vue', 'vue-router': 'VueRouter', 'element-ui': 'ELEMENT' } } }
|
注:如果是其他组件,该如何设置?
例:
则写法则是:
1 2
| //from的部分在前,import的部分在后 'vue': 'Vue'
|
2、在main.js中设置
在main.js中将CSS文件注释掉,让他们通过CDN加载。
3、在index.html中引入CDN
1 2 3 4 5 6 7
| <link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css"> <link rel="stylesheet" href="https://unpkg.com/iview@3.5.4/dist/styles/iview.css">
<script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script> <script src="https://unpkg.com/vue-router@3.1.3/dist/vue-router.js"></script> <script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
|
三、优化效果
在结束优化后,vender文件大小都缩小到了80kb,其中CSS文件大小都只有几kb。 根据加载的waterfall,加载时间在2s左右,加载瓶颈在CDN的速度,比起之前的10s+已经有了很大的优化。