首页 > 其他分享 >深度理解vue3中选项式语句和组合式语句的区别

深度理解vue3中选项式语句和组合式语句的区别

时间:2023-09-07 20:33:26浏览次数:58  
标签:语句 组合式 选项 vue3 组件 message data

选项式语句和组合式语句是 Vue 3 中的两种不同的编程风格,它们都是用于编写 Vue 组件的方法。在本文中,我将详细介绍选项式语句和组合式语句的概念、区别和使用场景。

选项式语句是 Vue 3 中最常用的编写组件的方式之一。它使用了 Vue 的选项对象,其中包含了组件的各种选项,如数据、计算属性、方法、生命周期钩子等。通过在选项对象中定义这些选项,我们可以声明组件的行为和属性。以下是一个使用选项式语句编写的简单示例:

<script>
export default {
  data() {
    return {
      message: 'Hello, Vue!'
    }
  },
  computed: {
    reversedMessage() {
      return this.message.split('').reverse().join('')
    }
  },
  methods: {
    reverse() {
      this.message = this.message.split('').reverse().join('')
    }
  },
  mounted() {
    console.log('组件已经挂载')
  }
}
</script>

上面的代码中,我们使用了 data 选项来定义了一个名为 message 的响应式数据。computed 选项用于定义计算属性 reversedMessage,它将 message 的值进行反转。methods 选项中定义了一个 reverse 方法,用于实现 message 的反转操作。最后,使用 mounted 生命周期钩子来打印一条信息,表示组件已经成功挂载。


与之相对的,组合式语句是 Vue 3 中的一种新的编写组件的方式。它通过把逻辑进行组合,将复杂的功能拆分成单个的逻辑块,提高组件的可复用性和维护性。组合式语句使用了 setup 函数,并返回一个包含了所有逻辑的对象。以下是一个使用组合式语句编写的示例:


<script>
import { reactive, computed, onMounted } from 'vue'

export default {
  setup() {
    const data = reactive({
      message: 'Hello, Vue!'
    })

    const reversedMessage = computed(() => {
      return data.message.split('').reverse().join('')
    })

    const reverse = () => {
      data.message = data.message.split('').reverse().join('')
    }

    onMounted(() => {
      console.log('组件已经挂载')
    })

    return {
      data,
      reversedMessage,
      reverse
    }
  }
}
</script>

在上面的代码中,我们使用了 reactive 函数来创建了一个名为 data 的响应式对象。然后,使用 computed 函数来定义了计算属性 reversedMessage,它和选项式语句中的一样,将 data.message 的值进行反转。reverse 函数也保持不变,用于实现 data.message 的反转操作。onMounted 函数用于在组件挂载后执行一段代码。最后,在 setup 函数中将所有逻辑返回给组件。


选项式语句和组合式语句之间最显著的区别是语法上的差异。选项式语句中使用选项对象来定义组件的选项,而组合式语句则使用 setup 函数来返回包含了所有逻辑的对象。组合式语句还引入了一些新的 API,如 reactivecomputedonMounted 等,用于定义响应式数据、计算属性和生命周期钩子。此外,组合式语句的方式可以更好地组合和复用逻辑,使得组件更加清晰和易于维护。


在实际使用中,选项式语句和组合式语句都有各自适合的场景。选项式语句更适合编写简单的组件,它具有清晰易懂的语法,容易上手和理解。而组合式语句则更适合编写复杂的组件,它可以将逻辑进行拆分和组合,提高组件的可复用性和维护性。因此,在选择使用选项式语句还是组合式语句时,应根据具体的需求和组件的复杂程度进行权衡和选择。


总结起来,选项式语句和组合式语句是 Vue 3 中的两种不同的编程风格。选项式语句使用选项对象来定义组件的选项,适合编写简单的组件。组合式语句通过 setup 函数来返回一个包含了所有逻辑的对象,适合编写复杂的组件,并具有更好的组合和复用性。根据具体的需求和组件的复杂程度选择使用哪种风格来编写组件,对于提高开发效率和代码质量都有着很大的帮助。

标签:语句,组合式,选项,vue3,组件,message,data
From: https://blog.51cto.com/u_13794952/7401050

相关文章

  • 关于sql语句进行删除时不能使用简称的问题记录
    1、问题:在代码中使用到了sql删除的功能,最简单的删除sql:deletefrompeoplepwherep.id=1;但是出现了问题,提示我无法删除,报错为:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear......
  • Vue3实战06-CompositionAPI+<script setup>好在哪?
    Vue3的CompositionAPI+<scriptsetup>这种最新的代码组织方式。<scriptsetup>是啥?为啥尤大在微博强推?本文就使用CompositionAPI和<scriptsetup>重构第2讲的清单应用。重构过程将明白,CompositionAPI让我们更好组织代码结构,<scriptsetup>本质是更精简方式写Compositi......
  • sql建表添加注释的语句
    官方自带的,我觉得麻烦,稍微‘封装’一下createprocProc_AddExplian@tablevarchar(200),@clolumvarchar(200),@textvarchar(200)asbeginEXECsp_addextendedproperty'MS_Description',@text,'USER',dbo,'TABLE',@table,'COLUMN',......
  • vite + vue3 自动导入点击路由刷新问题记录
     exportdefaultdefineConfig(()=>{//这里只加入了element的有其他的也加在这里constoptimizeDepsElementPlusIncludes=['element-plus/es'];//预加载element样式有其他组件也是如此设置即可fs.readdirSync('node_modules/element-plus/es/components').......
  • Vue3实战06-CompositionAPI+<script setup>好在哪?
    Vue3的CompositionAPI+<scriptsetup>标签内定义的变量和函数,都可以在模板中直接使用。###1.2显示清单应用实现累加器后,回到src/pages/Home.vue组件,使用如下代码显示清单应用。直接importTodoList.vue组件,然后<scriptsetup>会自动把组件注册到当前组件,这样......
  • Python循环语句
    Python循环语句while基础使用条件需提供布尔类型结果,True继续,False停止规划好循环终止条件,否则会一直循环i=0whilei<100:print("输出了",i,"次哈哈哈")i+=1#结果输出了0次哈哈哈输出了1次哈哈哈输出了2次哈哈哈输出了3次哈哈哈...省......
  • pagehelper分页框架进行定时跑批分页 在插入与sql语句的编写,当插入有库中有报异常显示
    以下是一个示例的业务类,使用PageHelper分页框架进行定时跑批分页插入操作,并在遇到重复数据时跳过继续插入:importcom.github.pagehelper.PageHelper;importcom.github.pagehelper.PageInfo;importorg.springframework.beans.factory.annotation.Autowired;importorg.spring......
  • SQL语句大全之技巧篇
    1、1=1,1=2的使用,在SQL语句组合时用的较多“where1=1”是表示选择全部“where1=2”全部不选,如:if@strWhere!=''beginset@strSQL='selectcount(*)asTotalfrom['+@tblName+']where'+@strWhereendelsebeginset@strSQL='selectcount(*)as......
  • JavaNote03-流程控制语句
    0.流程控制语句流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。程序设计中规定的3种流程结构,即:顺序结构程序从上到下逐行地执行,中间没有任何判断和跳转。分支结构根据条件,选择性地执行某段代码。有if…else和switch-......
  • 【mysql】mysql判断某一张表是否存在的sql语句以及方法
    有四种方式进行判断: 1.--百分号中间为需要查询的表名SHOWTABLESLIKE‘%user%’;2. --dbname为数据库名字tablename为你需要查询的表名称,注意使用TEMPORARY关键字创建出来的临时表无法查询出来。selectTABLE_NAMEfromINFORMATION_SCHEMA.TABLESwhereTABL......