当前位置: 首页 > news >正文

前端基础之《Vue(26)—Vue3两种语法范式》

一、选项式

1、HTML写法

<!--
跟 Vue 说 Hello World!
--><script type="module">
import { createApp } from 'vue'createApp({data() {return {message: 'Hello World!'}}
}).mount('#app')
</script><div id="app"><h1>{{ message }}</h1>
</div>

2、单文件组件SFC写法

<!--
跟 Vue 说 Hello World!
--><script>
export default {data() {return {message: 'Hello World!'}}
}
</script><template><h1>{{ message }}</h1>
</template>

二、组合式

1、HTML写法

<!--
跟 Vue 说 Hello World!
--><script type="module">
import { createApp, ref } from 'vue'createApp({setup() {// “ref”是用来存储值的响应式数据源。// 理论上我们在展示该字符串的时候不需要将其包装在 ref() 中,// 但是在下一个示例中更改这个值的时候,我们就需要它了。const message = ref('Hello World!')return {message}}
}).mount('#app')
</script><div id="app"><h1>{{ message }}</h1>
</div>

2、单文件组件SFC写法

<!--
跟 Vue 说 Hello World!
--><script setup>
import { ref } from 'vue'// “ref”是用来存储值的响应式数据源。
// 理论上我们在展示该字符串的时候不需要将其包装在 ref() 中,
// 但是在下一个示例中更改这个值的时候,我们就需要它了。
const message = ref('Hello World!')
</script><template><h1>{{ message }}</h1>
</template>

3、<script setup>是语法糖,表示启动组合式写法

三、选项写法和组合写法的区别

1、比较<script>部分的区别

Vue2的选项式写法:

<template><div><h1>PageA</h1><h1 v-text='num'></h1><button @click='add'>自增</button></div></template><script>export default {data() {return {num: 1}},methods: {add () {this.num++}}}
</script>

Vue3的setup选项式写法:

<template><div><h1>PageA</h1><h1 v-text='num'></h1><button @click='add'>自增</button></div></template><script>// Vue3的选项写法import { ref } from 'vue'export default {// data() {//     return {//         num: 1//     }// },// methods: {//     add () {//         this.num++//     }// }setup(props, context) {console.log('---props', props)console.log('---context', context)const num = ref(1)const add = () => {num.value++}// 一定要returnreturn {num,add}}}
</script>

2、选项式写法对Vue2语法范式完全兼容,可以同时使用setup和选项,也可以只使用setup。
官方已经不推荐使用选项写法了。

3、选项的写法都有对应的组合API来替代。

4、setup选项

(1)setup选项相当于Vue2中的created(),可以理解成是组件生命周期的第一阶段。

(2)setup的两个参数
setup(props, context)
props:表示父组件传过来的自定义属性
context:表示上下文

(3)为什么在setup中要有一个上下文对象
因为在setup选项中没有this。
例如父子组件通信,要把变量传回父组件,用context.emit('input', num.value)代替this.$emit(xxx)

5、在Vue3中规避选项式写法
在<script>上加setup,这种写法是一种语法糖,是Vue3组合式写法的语法糖。

<template><div><h1>PageB</h1><h1>{{ num }}</h1><button @click='add'>自增</button></div>
</template><script setup>// Vue3组合式写法(并且是官方推荐的语法糖)import { ref } from 'vue'const num = ref(1000)const add = () => {num.value++}
</script>

http://www.dtcms.com/a/305197.html

相关文章:

  • C++(面向对象之继承、多态)
  • C++20协程实战:高效网络库、手机终端、多媒体开发开发指南
  • 嵌入向量与向量数据库:AI时代的语义搜索革命
  • 【Git】分支
  • 前端接入DeepSeek
  • 数据结构(6)单链表算法题(下)
  • 如何使用Spring AI框架开发mcp接口并发布成微服务
  • C51 中断
  • 笔试——Day22
  • 【Android】日期选择器
  • 镁金属接骨螺钉注册检测:骨科植入安全的科学基石
  • 【面试】软件测试面试题
  • ICT模拟零件测试方法--电阻测试
  • 集成电路学习:什么是WDT看门狗定时器
  • Java中的异常判断以及文件中的常用方法及功能
  • UCLAMP0501P.TCT SEMTECH:超低电容TVS二极管 0.25pF+20kV防护!
  • Python与Spark
  • 26考研11408数据结构
  • yolo11安卓端部署检测图片
  • Docker用Web应用实例深入容器
  • Docker初学者需要了解的几个知识点(三):Docker引擎与Docker Desktop
  • prometheus_client 调用统计
  • 2025年中科院与JCR期刊分区深度对比(第一期):TON中科院分区3区不变,JCR分区升至Q1;TOSEM重回中科院1区!
  • Wan2.1
  • openEuler性能测试常用工具-fio开源压力测试工具
  • 05动手学深度学习(下)
  • EnergyMath芯详科技 EMS4100/MES4000/MES3900
  • sqlite3---维护命令、回调函数
  • 用命令查看Android设备的 Linux 内核版本,了解其对应的硬件支持各种特性
  • gRPC性能陷阱:低延迟网络下的客户端瓶颈揭秘