前端基础之《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.pswp.cn/bicheng/91487.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

题目:BUUCTF之rip(pwn)

网址 BUUCTF在线评测https://buuoj.cn/challenges#rip打开&#xff0c;如图所示 提示&#xff1a;先别启动靶机&#xff0c;靶机可以最后在启动&#xff0c;先分析下载的附件pwn1。 点击下载&#xff0c;下载完成之后&#xff0c;该文件后缀类型改为exe&#xff08;就是将pwn…

el-button长按触发事件(含未响应的解决方案)

参考代码实现按钮长按触发逻辑 <template><el-button mousedown"handleMouseDown" mouseup"handleMouseUp">长按我</el-button> </template>data(){return{isPressed: false,timer: null,}},methods:{handleMouseDown() {this.isP…

List和 ObservableCollection 的区别

1. 变更通知机制​​ ​​ObservableCollection<T>​​ 实现了INotifyCollectionChanged和INotifyPropertyChanged接口&#xff0c;当集合元素被添加、删除、替换或重置时&#xff0c;会自动触发CollectionChanged事件&#xff0c;通知绑定的UI控件更新&#xff08;如WPF…

支付宝沙箱(白屏,用户订单参数错误等)

情况&#xff1a;Laravel项目的line 对接 支付宝沙箱测试 手机网站支付 1&#xff1a;沙箱地址&#xff0c;小到我找不到&#xff1a;沙箱应用 - 开放平台 2&#xff1a;虽然提供了系统密钥&#xff0c;但是只是测API链接的&#xff0c;要沙箱测试转账什么的&#xff0c;得用…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博评论IP地图可视化分析实现

大家好&#xff0c;我是java1234_小锋老师&#xff0c;最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程&#xff0c;持续更新中&#xff0c;计划月底更新完&#xff0c;感谢支持。今天讲解微博评论IP地图可视化分析实现 视频在线地…

【代码随想录】刷题笔记——二叉树篇

目录 144. 二叉树的前序遍历 94. 二叉树的中序遍历 145. 二叉树的后序遍历 102. 二叉树的层序遍历 226. 翻转二叉树 101. 对称二叉树 104. 二叉树的最大深度 111. 二叉树的最小深度 222. 完全二叉树的节点个数 110. 平衡二叉树 257. 二叉树的所有路径 404. 左叶子之…

基于deepseek的文本解析 - 超长文本的md结构化

pdf超长合同或其他超100页非结构化文档&#xff0c;很难全量提交deepseek进行分析&#xff0c;一般需要先进行分割。然而&#xff0c;不管是langchain还是llamaindex提供的文本分割工具&#xff0c;很难直接对非结构化文本进行准确的内容分割&#xff0c;很多原始整体段落被划分…

介绍一个图像修复开源项目,从模糊到清晰仅需1.7秒:HYPIR图像修复技术如何改变数字世界?

文章概要 作为一名长期关注图像处理技术的爱好者&#xff0c;当我第一次接触到HYPIR这一革命性图像修复工具时&#xff0c;我被其惊人的速度和质量所震撼。本文将全面介绍由中国科学院深圳先进技术研究院董超研究员团队研发的HYPIR图像修复大模型&#xff0c;详细解析其核心技术…

基于UDP的SNMP协议

SNMP协议详解 SNMP (Simple Network Management Protocol)&#xff0c;“简单网络管理协议”&#xff0c;是广泛应用于TCP/IP网络中&#xff0c;用于管理和监控网络设备的一种标准协议。它允许网络管理员查询网络设备的状态信息、配置参数、接收故障告警等&#xff0c;从而实现…

3D空间中的变换矩阵

3D 空间中的变换矩阵详解 在 3D 计算机图形学中&#xff0c;所有几何变换都可以通过 44 齐次变换矩阵 来表示。以下详细介绍各种变换矩阵及其原理。 核心变换矩阵 1. 单位矩阵&#xff08;不变变换&#xff09; I[1000010000100001] I \begin{bmatrix} 1 & 0 & 0 &…

长连接(Long Connection)详解

一、长连接基本概念长连接&#xff08;也称为持久连接&#xff09;是指在一个TCP连接上可以连续发送多个HTTP请求/响应&#xff0c;而不是每次通信都建立新的连接。这是HTTP/1.1的默认行为&#xff0c;通过Connection: keep-alive头部实现。二、工作原理1. 传统短连接流程客户端…

【汇总】接口自动化测试 + 持续集成(文末视频演示)

技术栈&#xff1a;java testng httpclient allure fastjson jsonpath poi/yaml log4j 有建议请联系wx&#xff1a;ren168632201 java接口自动化系列(01)&#xff1a;自动化测试框架设计(入门版) java接口自动化系列(02)&#xff1a;测试数据文件设计(excel/yam) java接…

科研快报 |无人机+AI:广东防控基孔热背后的技术革命

Prism Path 科 研 快 报 CS跨学科顶尖期刊论文资讯 -NO.2025001- 人工智能在登革热预防、控制与管理中的作用&#xff1a;一项技术性叙述综述 The role of artificial intelligence for dengue prevention, control, and management: A technical narrative review 期刊…

常见的中间件漏洞

建议&#xff1a;启动下一个环境时&#xff0c;将上一个环境关闭&#xff0c;防止端口冲突和运行卡顿1.TomcatTomcat put方法任意文件写入漏洞Apache Tomcat 7.0.0 - 7.0.79 Apache Tomcat 8.5.19环境&#xff1a;cd vulhub-master/tomcat/CVE-2017-12615 docker-compose up -d…

7寸工业模组 XA070Y2-L01芯显科技详细参数资料

芯显7寸工业液晶屏 XA070Y2-L01 技术规格单 基础信息 项目 参数 制造商 芯显 型号 XA070Y2-L01 显示技术 a-Si TN TFT-LCD 应用场景 车载中控 / 工业HMI 屏幕尺寸 7.0英寸 机械结构 特性 指标 显示区域 152.4 91.44 mm 整机尺寸 165 104.09 9.1 mm 公差范围 0.5 mm 表面处理…

机器学习基础-numpy

一、相关知识点二、例子&#xff1a;import matplotlib.pyplot as plt import numpy as npplt.rcParams[font.sans-serif] [KaiTi] # 使用黑体 plt.rcParams[axes.unicode_minus] False # 解决负号显示问题math np.random.randint(low60,high100,size50) english np.rand…

Cockpit管理服务器

Cockpit 是一个开源工具&#xff0c;通过Web Console管理Linux服务器。部署 Cockpit[rootserver ~ 11:05:26]# yum -y install cockpit​[rootserver ~ 11:30:26]# systemctl enable cockpit.socket --nowCreated symlink from /etc/systemd/system/sockets.target.wants/cockp…

处理订单过期但支付成功的系统设计:平衡用户体验与业务规则

设计一个处理订单过期但用户支付成功的场景&#xff0c;需要平衡用户体验、系统一致性和业务规则。以下是一个系统化的设计方案&#xff0c;涵盖关键流程、异常处理和用户沟通&#xff1a;1. 场景分析 背景&#xff1a;用户在下单后&#xff0c;订单因超时而被标记为“过期”&a…

AI学习笔记三十三:基于Opencv的单目标跟踪

若该文为原创文章&#xff0c;转载请注明原文出处。一、功能介绍主要是想实现跟踪视频中的一个特定目标。使用了OpenCV库来实现视频中特定目标的跟踪。需要提供视频文件路径以及目标在第一帧中的位置坐标&#xff08;x, y, width, height&#xff09;&#xff0c;程序会自动跟踪…

第二篇:Three.js核心三要素:场景、相机、渲染器

第二篇&#xff1a;Three.js核心三要素&#xff1a;场景、相机、渲染器 引言 在Three.js的世界里&#xff0c;场景(Scene)、相机(Camera)和渲染器(Renderer)构成了最基础的"铁三角"。它们如同导演、摄像机和放映机&#xff0c;共同决定了3D内容的呈现方式。本篇将深入…