6.12作业

1、pinia和vuex的区别


        1.pinia没有mutations,只有state,getters,actions
        2.pinia分模块不需要modules (之前vuex分模块需要modules)
        3.pinia体积更小(性能更好)
        4.pinia可以直接修改state数据

2、Vue2和vue3的响应式原理分别是什么,以及vue3为什么要更改实现响应式原理的方式


Vue2中使用的响应式原理是通过Object.defineProperty方法对数据进行劫持监听,从而实现数据的响应式更新。
而Vue3中使用的响应式原理是基于ES6的Proxy实现的,通过Proxy对象代理数据,可以实现更高效的数据监听和更新,同时也可以监听到数组的变化。

3. 选项式API与组合式api的区别


在逻辑组织和逻辑复用方面,Composition API是优于Options API
因为Composition API几乎是函数,会有更好的类型推断。
Composition API对 tree-shaking 友好,代码也更容易压缩
Composition API中见不到this的使用,减少了this指向不明的情况
如果是小型组件,可以继续使用Options API,也是十分友好的


4- ref与reactive的区别


定义数据角度:
        ref用来定义:基本类型数据。
        reactive用来定义:对象(或数组)类型数据。
        备注:ref也可以用来定义对象(或数组)类型数据, 它内部会自动通过reactive转为代理对象。
原理角度:
        ref通过Object.defineProperty()的get与set来实现响应式(数据劫持)。
        reactive通过使用Proxy来实现响应式(数据劫持), 并通过Reflect操作源对象内部的数据。
使用角度:
        ref定义的数据:操作数据需要.value,读取数据时模板中直接读取不需要.value。
        reactive定义的数据:操作数据与读取数据:均不需要.value。

5、 setup的作用


setup是什么,作用
        1、新的选项,所有的组合api函数都在此使用,只在初始化时执行一次
        2、函数如果返回对象,对象中的属性与方法,在模板中可以直接使用
执行时机:
        1、在beforeCreate之前执行一次,此时组件对象还没有创建
        2、This的值为undefined,不能通过this操作 data、computed、methods、props
        3、所有的composition api 都不能使用this
返回值:
        1、一般都返回一个对象,用于向模板返回数据,返回的数据模板可以直接使用
        2、返回的对象的属性与data返回的数据 在组件对象中属性合并
        3、返回的对象的方法与methods返回的数据 在组件对象中方法合并
        4、切记:
                (1)如遇相同名字 setup优先
                (2)Methods可以访问setup中属性与方法,setup不可以访问data与methods ,此方式不推荐使用
                (3)Setup不能是一个异步函数,如果设置为异步函数返回的是一个promise,模板不能获取到return返回的对象
              参数:
                        setup(props, context) / setup(props, {attrs, slots, emit})
                        props:接收组件的属性,
                        context:上下文对象,包括 slots,attrs,emit,expose
                        (1)attrs: 包含没有在props配置中声明的属性的对象, 相当于 this.a t t r s ( 2 ) s l o t s : 包含所有传入的插槽内容的对象 , 相当于 t h i s . attrs

                        (2)slots: 包含所有传入的插槽内容的对象, 相当于 this.attrs(2)slots:包含所有传入的插槽内容的对象,相当于this.slots
                        (3)emit: 用来分发自定义事件的函数, 相当于 this.$emit

你可能感兴趣的:(javascript,开发语言,ecmascript)