API和数据响应式

面试题 :1.为什么去掉了Vue构造函数

面试题 : 2.谈谈你对vue3数据响应式的理解

去掉了Vue构造函数

vue2中

Vue.use(...) //此代码会影响所有的vue应用

Vue.mixin(...) //此代码会影响所有的vue应用

Vue.component(...)//此代码会影响所有的vue应用

new Vue({}).$mount("#app1")

new Vue({}).$mount("#app2")

 

在vue3中 去掉了构造函数 转而使用createApp 创建vue应用

createApp(跟组件).use(...).mixin(...).component(...).mount("#app1")

createApp(跟组件).mount("#app2")

1.为什么去掉了Vue构造函数答案

vue2的全局构造函数带来了诸多问题
1.调用构造函数的静态方法会对所有vu应用生效,不利于隔离不同应用
2,vue2的构造函数集成了太多功能,不利于tree shaking,vue3把这些功能使用普通函数导出,能够充分利用tree
shaking优化打包体积
3.vue2没有把组件实例和vue应用两个概念区分开,在vue2中,通过new Vue创建的对象,既是一个vue应用,同时又是
一个特殊的vue组件。vue3中,把两个概念区别开来,通过createApp创建的对象,是一个vue应用,它内部提供的方法是
针对整个应用的,而不再是一个特殊的组件。

 

面试题2:谈谈你对vue3数据响应式的理解
vue3不再使用Object.defineProperty的方式定义完成数据响应式,而是使用Proxy.。
除了Proxy本身效率比Object.defineProperty更高之外,由于不必递归遍历所有属性,而是直接得到一个Proxy。所以在
vu3中,对数据的访问是动态的,当访问某个属性的时候,再动态的获取和设置,这就极大的提升了在组件初始阶段的效
率。
同时,由于Proxy可以监控到成员的新增和删除,因此,在ue3中新增成员、删除成员、索引访问等均可以触发重新渲染,
而这些在vue2中是难以做到的。

 

posted on 2024-06-01 19:37  龍瀧尨呀  阅读(1)  评论(0编辑  收藏  举报

导航