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

[Vue3]语法变动

        Vue3的语法相对比Vue2有不少改变,这篇讲一下基础语法在Vue3里的形式。

创建Vue对象

        在脚手架项目中,index.html等资源不再编写代码,只作为一个容器。所有的页面代码都在.vue相关文件中进行编写,由main.js引入各个.vue文件渲染出页面,再注入给index.html等容器。        

        在这里我们演示一下单个index.html中创建vue对象:

        

v-model(双向数据绑定)

功能:在表单元素和组件上实现双向数据绑定,自动同步数据与视图。

基础用法

<template><!-- 文本输入框 --><input v-model="text" /><p>输入内容:{{ text }}</p><!-- 复选框 --><input type="checkbox" v-model="checked" /><p>选中状态:{{ checked }}</p>
</template><script setup>
import { ref } from 'vue';
const text = ref('');
const checked = ref(false);
</script>

         import可以换成下面的形式:

<script setup>
const text = Vue.ref('');//直接改用Vue.Xxxx 的方式
const checked = ref(false);
</script>

 修饰符

.lazy:改为监听 change 事件(输入完成时触发)

.number:自动将输入转为数字类型

.trim:自动去除首尾空格


v-bind(属性绑定)

功能:动态绑定 HTML 属性或组件 props,实现单向数据流。

<template><!-- 绑定属性 --><img :src="imageUrl" :alt="altText" /><!-- 动态属性名 --><div :[dynamicAttr]="value"></div><!-- 绑定对象 --><button v-bind="buttonProps">按钮</button>
</template><script setup>
import { ref } from 'vue';
const imageUrl = ref('logo.png');
const altText = ref('网站标志');
const dynamicAttr = ref('data-id');
const buttonProps = ref({id: 'submit-btn',class: 'primary',disabled: false
});
</script>

v-on(事件监听)

功能:监听 DOM 事件或自定义事件。

<template><!-- 基础用法 --><button @click="count++">点击次数:{{ count }}</button><!-- 方法处理 --><button @click="handleClick('参数', $event)">带参事件</button><!-- 事件修饰符 --><form @submit.prevent="onSubmit"><input @keyup.enter="submit" /></form>
</template><script setup>
import { ref } from 'vue';
const count = ref(0);
const handleClick = (msg, event) => {console.log(msg, event);
};
</script>

修饰符:

.stop - 阻止冒泡

.prevent - 阻止默认行为

.once - 只触发一次

.self - 仅当事件源是元素本身时触发

条件渲染

v-if / v-else

<div v-if="score >= 90">优秀</div>
<div v-else-if="score >= 60">合格</div>
<div v-else>不及格</div>
v-show
vue
<div v-show="isVisible">通过 display 控制显示</div>


区别:

v-if:条件为假时移除 DOM 元素

v-show:始终保留 DOM,通过 CSS 控制显示

列表渲染 (v-for)

<template><ul><li v-for="(item, index) in items" :key="item.id">{{ index + 1 }}. {{ item.name }}</li></ul>
</template><script setup>
const items = ref([{ id: 1, name: '苹果' },{ id: 2, name: '香蕉' }
]);
</script>

http://www.lryc.cn/news/2379647.html

相关文章:

  • Ubuntu服务器开启SNMP服务 监控系统配置指南 -优雅草星云智控简易化操作
  • linux本地部署ollama+deepseek过程
  • 从零开始实现大语言模型(十五):并行计算与分布式机器学习
  • OpenCV进阶操作:指纹验证、识别
  • 网络安全-等级保护(等保) 2-5 GB/T 25070—2019《信息安全技术 网络安全等级保护安全设计技术要求》-2019-05-10发布【现行】
  • 3D生成新突破:阶跃星辰Step1X-3D开源,可控性大幅提升
  • MySQL数据类型之VARCHAR和CHAR使用详解
  • 数字人 LAM 部署笔记
  • 《Docker 入门与进阶:架构剖析、隔离原理及安装实操》
  • 基于Akamai云计算平台的OTT媒体点播转码解决方案
  • 【MySQL】02.数据库基础
  • 选错方向太致命,华为HCIE数通和云计算到底怎么选?
  • 经典启发算法【早期/启发式/HC爬山/SA模拟退火/TS禁忌搜/IA免疫 思想流程举例全】
  • IntraWeb 16.0.2 + Bootstrap 4 居中布局实战(附源码+效果图)
  • Spring 框架中适配器模式的五大典型应用场景
  • 【Java ee初阶】jvm(3)
  • C 语言多维数组:定义、初始化与访问的深度解析
  • 浅入ES5、ES6(ES2015)、ES2023(ES14)版本对比,及使用建议---ES6就够用(个人觉得)
  • 23种设计模式考试趋势分析之——适配器(Adapter)设计模式——求三连
  • Python 翻译词典小程序
  • 【Linux笔记】——线程互斥与互斥锁的封装
  • Android屏幕采集编码打包推送RTMP技术详解:从开发到优化与应用
  • 【深度学习】残差网络(ResNet)
  • 《Python星球日记》 第94天:走近自动化训练平台
  • S7 200 smart连接Profinet转ModbusTCP网关与西门子1200PLC配置案例
  • React中巧妙使用异步组件Suspense优化页面性能。
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.7)
  • 11 web 自动化之 DDT 数据驱动详解
  • OpenCV-python灰度变化和直方图修正类型
  • 从 Excel 到 Data.olllo:数据分析师的提效之路