const router = new VueRouter({
routes: [
{ path: ‘/foo’, component: () => import(‘./Foo.vue’) }
]
})
[](()keep-alive缓存页面
[](()使用v-show复用DOM
[](()v-for 遍历避免同时使用 v-if
v-for=“user in activeUsers”
:key=“user.id”>
{{ user.name }}
[](()长列表性能优化
如果列表是纯粹的数据展示,不会有任何改变,就不需要做响应化
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”
<FetchItemView
:item=“item”
@vote=“voteItem(item)”
/>
参考[vue-virtual-scroller](()、[vue-virtual-scroll-list](()
[](()事件的销毁
Vue 组件销毁时,会自动解绑它的全部指令及事件监听器,但是仅限于组件本身的事件。
created() {
this.timer = setInterval(this.refresh, 2000)
},
beforeDestroy() {
clearInterval(this.timer)
}
[](()图片懒加载
对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载, 等到滚动到可视区域后再去加载。
参考项目:[vue-lazyload](()
[](()第三方插件按需引入
- 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 ---------------------------------------------------------------------------
像element-ui这样的第三方组件库可以按需引入避免体积太大。