一.为何v-for要用key属性呢?
key具有唯一性,可以阻止元素复用,快速查找到节点,减少渲染次数,提升渲染性能
二.v-if和v-show的区别
v-if:适用于条件经常变化或需要创建和销毁元素的场景,因为它会根据条件动态添加或移除DOM元素(if为真添加到DOM结构否则会从DOM中移除)
v-show:适用于需要频繁切换显示状态的元素,因为它仅通过改变css样式来控制显示和隐藏(在DOM中存在 但不可见)
三.for循环和map循环,forEach的区别
for循环是通过指定初始条件、循环条件和每次循环后的操作来遍历数组
map遍历对象自身和继承可枚举的属性,也就是说会包括哪些原型链上的属性
forEach方法用于调用数组的每个元素,并将元素传递给回调元素
拓展:map不会对空数组进行检测,map会返回一个新数组,不会对原数组产生影响
for循环需要手动编写循环变量的初始化、条件判断和更新操作,
map方法则通过回调函数自动遍历数组中的每个元素,并返回一个新数组
四.vue2和vue3区别
- Vue2 只支持一个根节点,Vue3 支持多个根节点,
- Vue2响应式,基于Object.defineProperty()实现的
- Vue3响应式就与Proxy实现的
- 在vue2中,v-for 优先级高于 v-if; 在vue3 中,v-if 优先级高于v-for;
- 对于生命周期来说,Vue3整体上变化不大,只是大部分生命周期钩子名称上 + “on”,功能上是类似的。不过有一点需要注意,Vue3 在组合式API(Composition API)中使用生命周期钩子时需要先引入,而 Vue2 在选项API(Options API)中可以直接调用生命周期钩子
五.vuex和pinia
1. pinia不需要手动划分模块,vuex需要手动
2. pinia中getter和action可以通过this来访问整个store实例。pinia中action可以编写同步代码也可以编写异步代码
3. pinia对ts的支持更加友好
4.Pinia是一个轻量级的状态管理库,它专注于提供一个简单的API来管理应用程序的状态;
Vuex是一个更完整的状态管理库,它提供了更多的功能,比如模块化、插件和严格模式等
六.同步异步阻塞非阻塞
同步:阻塞 需要等待
异步:非阻塞 不需要等待
应用场景:同步:适用于执行速度较快的操作
异步:适用于耗时的操作 如:网络请求 文件续写 数据库查询