- 路由懒加载
const router = new VueRouter({
routes:[
{
path:‘/foo’,
component:() => import(‘./Foo.vue’)
}
]
})
- keep-alive缓存页面
- 使用v-show复用DOM
11111
222222
- v-for时加key,以及避免和v-if同时使用
v-for = “user in activeUsers”
:key = “user.id”
{{ user.name }}
- 事件销毁
created(){
this.timer = setInterval(this.refresh,2000)
},
beforeDestroy(){
clearInterval(this.timer)
}
- 图片懒加载(vue-lazyload)
- 第三方插件按需引入
import Vue from ‘vue’
import { Button,Select } from ‘element-ui’
Vue.use(Button)
Vue.use(Select)
- 无状态的组件标记为函数式组件
《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】
- 子组件分割
-  长性能列表的优化 
-  如果列表是纯粹的数据展示,不会有任何改变,就不需要做响应式 
export default {
data: () => ({
users:[]
})
async created(){
const users = await axios.get(‘/api/users’)
this.users = object.freeze(users)
}
}
- 如果是大数据长列表,可采用虚拟滚动,只渲染少部分区域内容
[](()描述Vue组件生命周期(父子组件)
- 见上文梳理
[](()Vue组件如何通讯(常见)

[](()描述组件渲染和更新的过程
-  执行render函数 触发 getter 收集依赖到 watcher 
-  更新的时候 触发 setter 通知 watcher 触发 re-render 渲染 
[](()双向数据绑定 v-model 的实现原理
-  input 元素的 value = this.name 
-  绑定input事件 this.name = $event.target.value 
-  data 更新触发re-render 
[](()对MVVM的理解
[](()computed 有何特点
-  缓存,data不变不会重新计算 
-  提高性能 
[](()ajax请求应该放在哪个生命周期
-  mounted (整个渲染完成,dom渲染完成) 
-  js是单线程,ajax异步获取数据 
[](()如何将组件所有props传递给子组件
-  $props 
-  <User v-bind="$props">
[](()何时需要使用beforeDestory
-  解绑自定义事件 event.$off 
-  清楚定时器 
-  解绑自定义的DOM事件,如window scroll 等 
[](()Vuex中action和mutation有何区别
-  action中处理异步,mutation不可以 
-  mutation做原子操作 
-  action 可以整合多个mutation 
[](()请用vnode描述一个DOM结构
{
tag:‘xx’,
props:{
id:‘xx’
},
children:[
tag:‘xx’,
children:“xxx”
]
}
[](()简述diff算法过程
-  patch(elm,vnode) 和 patch(vnode,newVnode) 
-  patchVnode 和 addVnodes 和 removeVnode 
-  updateChildren(key的重要性) 
[](()你对Vue3.0的新特性有没有了解
-  更快 
-  虚拟DOM重写 
期待更多的编译时提示来减少运行时开销,使用更有效的代码来创建虚拟节点
组件快速路径 + 单个调用 + 子节点类型检测
-  跳过不必要的条件分支 
-  JS引擎更容易优化 

- 优化slots的生成
vue3中可以单独重新渲染父级和子级
-  确保实例正确的跟踪依赖关系 
-  避免不必要的父子组件重新渲染 

- 静态树提升
使用静态树提升,这意味着Vue3 的编译器将能够检测到什么是静态的,然后将其提升,从而降低了渲染成本。
-  跳过修补整棵树,从而降低渲染成本 
-  即使多次出现也能正常工作  
-  静态属性提升 
使用静态属性提升,Vue 3 打补丁时将跳过这些属性不会改变的节点,但是孩子还要继续patch 
- 基于Proxy的响应式系统
Vue 2的响应式系统使用 Object.defineProperty的getter和setter。Vue 3将使用ES2015 Proxy作为其观察机制,这将会带来如下变化:
-  组件实例初始化的速度提高100% 
-  使用Proxy节省以前一半的内存开销,加快速度,但是存在低浏览器版本的不兼容 
-  为了继续支持IE11,Vue 3将发布一个支持旧观察机制的和新Proxy版本的构建 

-  更小 
-  通过摇树优化核心库体积 
-  更容易维护 
-  TypeScript + 模块化 
Vue 3将带来更可维护的源代码。他不仅会使用TypeScript,而且许多包被解耦,更加模块化

-  更加友好 
-  跨平台:编译器核心和运行时核心与平台无关,使得Vue更容易与任何平台(web、Android、IOS)一起使用 










