Vue3中的两种API风格

vue中的两种API–选项 API 和 组合 API

选项式API (Options API)

初见

在vue2.x项目中使用的就是选项API写法,而且vue2的项目中也仅仅只能使用选项式的写法,组合式写法从vue3开始适用;

使用选项式 API,我们可以用包含多个选项的对象来描述组件的逻辑,例如 datamethodsmounted。选项所定义的属性都会暴露在函数内部的 this 上,它会指向当前的组件实例。

其中的每一个选项都只负责自己的部分。

例如,data中定义的属性:count;methods中所定义的方法:increment都暴露在this上,通过在本实例中都是this进行访问。this.count ; this.increment()

<script>
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    increment() {
      this.count++
    }
  },
  mounted() {
    console.log(`The initial count is ${this.count}.`)
  }
}
</script>

<template>
  <button @click="increment">Count is: {{ count }}</button>
</template>

代码风格:date选项写数据,methods选项写函数等等,一个功能逻辑的代码分散数个模块中

优点:易于学习和使用,写代码的位置已经约定好了

缺点:代码组织性差,相似的逻辑代码不便于复用,逻辑复杂代码多了不好阅读;虽然提供了 mixins 用来封装逻辑,但是出现数据函数覆盖的概率很大,不好维护。

组合式 API

初见

通过组合式 API,我们可以使用导入的 API 函数来描述组件逻辑。在单文件组件中,组合式 API 通常会与

在vue3中两种方式均可用。

使用选项式的写法写vue3里面可以有vue2的代码,但是如果采用vue3语法糖的写法里面是不能有vue2的写法的;

<script setup>  // vue3的语法糖
import { ref, onMounted } from 'vue'

// 响应式状态
const count = ref(0)

// 用来修改状态、触发更新的函数
function increment() {
  count.value++
}

// 生命周期钩子
onMounted(() => {
  console.log(`The initial count is ${count.value}.`)
})
</script>

<template>
  <button @click="increment">Count is: {{ count }}</button>
</template>

代码风格:一个功能逻辑的代码组织在一起(包括数据,函数、、、)

优点:功能逻辑复杂繁多情况下,各个功能逻辑代码组织再一起,便于阅读和维护

缺点:需要有良好的代码组织能力和拆分逻辑能力 (在 vue3 中也可以支持 vue2 选项API 写法)

选项式和组合式 API 的关系

  1. 组合式 API 的目的是增强,不是取代选项式 API , vue3 对两种 API 都支持
  2. 两种 API 风格都能够覆盖大部分的应用场景。它们只是同一个底层系统所提供的两套不同的接口。实际上,选项式 API 是在组合式 API 的基础上实现的!
  3. 简单的场景使用选项式 API 更加简单方便
  4. 需要强烈支持 TS 的项目首选组合式 API
  5. 需要大量逻辑复用的场景首选组合式 API

你可能感兴趣的:(vue,vue.js,前端,javascript)