VUE逐点突破系列 -- Vue性能优化方法

41 阅读1分钟

VUE逐点突破系列 – Vue性能优化方法

========================================================================================

路由懒加载


const router = new VueRouter({

routes: [

{ path: '/foo', component: () => import('./Foo.vue') }

]

})

keep-alive缓存页面


使用v-show复用DOM


v-for 遍历避免同时使用 v-if


长列表性能优化


如果列表是纯粹的数据展示,不会有任何改变,就不需要做响应化

export default {

data: () => ({

users: []

}),

async created() {

const users = await axios.get("/api/users");

this.users = Object.freeze(users);

}

};

如果是大数据长列表,可采用虚拟滚动,只渲染少部分区域的内容

<recycle-scroller

class="items"

:items="items"

:item-size="24"

参考vue-virtual-scrollervue-virtual-scroll-list

事件的销毁


Vue 组件销毁时,会自动解绑它的全部指令及事件监听器,但是仅限于组件本身的事件。

created() {

this.timer = setInterval(this.refresh, 2000)

},

beforeDestroy() {

clearInterval(this.timer)

}

图片懒加载


对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载, 等到滚动到可视区域后再去加载。

参考项目:vue-lazyload

第三方插件按需引入


像element-ui这样的第三方组件库可以按需引入避免体积太大。

import Vue from 'vue';

import { Button, Select } from 'element-ui';

Vue.use(Button)

Vue.use(Select)

无状态的组件标记为函数式组件


子组件分割