La diferencia entre vue3 y vue2

Principio de respuesta

El principio de respuesta de vue2 utiliza Object.defineProperties para escuchar el getter y setter del objeto
Vue3 pxoy proxy para escuchar el objeto

método de inicio

ver2

new Vue({
    
    
  store,
  router,
  render:h=>h(App)
}).$mount("#app")

ver 3

import {
    
    createApp} from 'vue'
createApp(App).use(store).use(router).mount('#app')

método de definición global

ver2

Vue.prototype.$http = axios

ver 3

var spp = cerateApp(App)
app.config.globalProperies.$http = axios

componente raíz de la plantilla

Vue2 tiene y solo un componente raíz
vue3 puede tener múltiples

ciclo vital


beforeCreate antes y después de la creación de vue2 , beforeMount antes y después del montaje creado, beforeUpdate antes y después de la actualización
montada , beforeDestroy antes y después de la destrucción actualizada, destruido

beforeCreate antes y después de la creación de vue3
,
beforeMount antes y después del montaje creado,
beforeUpdate antes y después de la actualización montada,
interruptor de desmontaje actualizado beforeUnmount, desmontado

Ventajas de vue3 en comparación con vue2

Ventaja 1 Importe bajo demanda, importe las funciones que se necesitan
Ventaja 2 El método de escritura es más cercano al js nativo y la lectura es más clara
Ventaja 3 Sin esto, se reduce el acoplamiento de código y se mejora la reutilización

<template>
<div>
<button @click="num++">{
    
    {
    
    num}}</button>
<button @click="setNum()">改变为5</button>
<div v-for="item in list" :key="item">{
    
    {
    
    item}}
<button @click="list.splice(index,1)">x</button>
</div>
<p>{
    
    {
    
    twiceNum}}</p>
<p ref="myp">我爱我的祖国</p>
</div>
</template>
<script>
import {
    
    ref,reactive,watch,watchEffect,computed,onMounted} from 'vue';
// 优点1 按需导入,需要什么功能导入什么
// 优点2 写法更加接近原生js,阅读更清晰
// 优点3 没有this,降低代码耦合性,提高了复用性
export default {
    
    
  setup(){
    
    
   // 定义一个值类型的响应式对象num 默认值是5
   const num=ref(5)
   // 定义一个应用类型的响应式数据list 默认是
   const list = reactive(["vue","react","angular"])
   // 返回num
   // 定义一个修改num的方法
   function setNum(){
    
    
    // 在steper内部修改num值要修改num.value的值
    num.value=5;
   }
   watch(num,function(nval,oval){
    
    
    console.log("num由",oval,"变化为",nval)
   })
   watchEffect(()=>{
    
    
    // 只要在改回调函数中引用的变量,都会监听到变化
    console.log(num.value,list[1],'变化了');
   })
   var twiceNum=computed(()=>num.value*2)
   // 在setup没有创建前后,有挂载,更新,卸载前后
   var myp=ref(null);
   // setup中的生命周期前面加on
   onMounted(() => {
    
    
    console.log("组件已经挂载完毕");
    // myp.value就是dom节点
    myp.value.addEventListener("click",()=>alert
    (myp.value.innerText))
   })
   return {
    
    num,list,setNum,twiceNum,myp}
  }
}
</script>
<style>
</style>

Supongo que te gusta

Origin blog.csdn.net/topuu/article/details/126279108
Recomendado
Clasificación