Vue3和Vue2相比到底做了那些更新(三).....

592 阅读2分钟

「这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战

1.全局API的转移

Vue 2.x中有许多全局API和配置

  • 例如注册全局组件,注册全局指令等
  • Vue.component('',{
      data:()=>({
        name:'zhao'
      }),
      template:'<a>{{name}}</a>'
    })
    

Vue3.0中对api做了调整

将全局的API,即Vue.xxx调整到应用实例(app)上

2.x全局API(Vue)3.x实例API(APP)
Vue.config.xxxapp.config.xxx
Vue.config.producyionTip (vue提示语)移除
Vue.componentapp.component
Vue.directiveapp.directive
Vue.mixinapp.mixin
Vue.useapp.use
Vue.prototypeapp.config.globalProperties

2.其他改变

  • vue过渡 transition 中的类名改变 Vue3.0写法

    .v-enter-from,

    .v-leave-to{

    opacity:0;

    }

    .v-enter-from,

    .v-leave-to{

    opacity:1;

    }

    移除keyCode作为v-on的修饰符,

    移除v-on.native修饰符

    父组件中绑定事件

    <sun
      v-on:close="hand"
      v-on:click="hands"
    ></sun>
    

    子组件中声明自定义事件

    export default {
      emits:['close'],
      }
    

移除过滤器(filter)

总的来说vue3的新特性可以包括以下几点:

Performance:性能优化

Tree-shaking support:支持摇树优化

Composition API:组合API

Fragment,Teleport,Suspense:新增的组件

Better TypeScript support:更好的TypeScript支持

Custom Renderer API:自定义渲染器

以上就是Vue3的全部新特性,接下来 我们来看看MVVM和MVC框架区别:

MVC模式

  • 视图(View)

    接收用户的动作,传递指令给Controller

  • 控制器(Controller)

    控制器根据用户动作进行业务逻辑,要求模型进行改变。

  • 模型(Model)

    Model层将新的数据发送给View,用户得到反馈,模型层用于存储视图层展示的数据

MV-VM模式
	View层用来接收用户请求,(DOM操作,Ajax等。)
	ViewModel监听View层请求状态的变化和Model层数据的变化
	ViewModel和Model之间进行双向数据绑定,Model层监听ViewModel的变化
	
MVC和MVVM的本质区别
	MVC
	MVC模式数据是单向通信,遵循View(视图)->controller(控制器)->Model(模型)->View(视图)
	MVVM
	Model不能直接操作View层
	数据可以双向通讯

Controller层 修改为ViewModel层(视图模型)

  • View层用来接收用户请求(DOM事件、 Ajax等)
  • ViewModel监听View层请求状态的变化和Model层数据状态的变化
  • ViewModel和Model之间进行数据双向绑定,Model层 监听ViewModel的变化- MVC和MVVM本质区别
  • MVC模式,数据是单向通信,
  • 遵循View -> Controller -> Model -> View方向-
  • MVVM模式,数据可以双向通信

在这里,需要提一下,Vue3.2版本已经发布。

在Vue的日志中这样写到:

Vue 3.2 版本包括许多重要的新功能和性能改进,但并不包含重大更改。

3.新的单文件组件功能

<script setup> 是一种编译时语法糖,可在 SFC 内使用 Composition API 时极大地提升工作效率。 <style> v-bind 在 SFC 标签中启用组件状态驱动的动态 CSS 值。<style>

起初 vue3.0 暴露变量必须 return 出来,template中才能使用

<script>
import A from './AAA.vue'
import B from './BBB.vue'
export default {
  setup (props) {
  	return {
  	  well: Math.random(),
  	  A,
  	  B
  	}
  }
}
</script>

这是一起使用这两个新功能的示例组件:

<script setup>
import { ref } from 'vue'

const color = ref('red')
</script>

<template>
  <button @click="color = color === 'red' ? 'green' : 'red'">
    Color is: {{ color }}
  </button>
</template>

<style scoped>
button {
  color: v-bind(color);
}
</style>

目前现在这里介绍Vue3.2中这一种新写法,在3.2中更新不太多,所以也很好学习和掌握~