【Vue】脚手架 v-html v-text v-bind v-on v-show v-if v-for v-model

文章目录

  • Ⅰ. 脚手架
    • 一、Vue开发方式
      • 1. 传统开发模式
      • 2. 工程化开发模式
    • 二、准备工程化环境
      • 1. 安装 Nodejs
      • 2. 安装 yarn 或 pnpm
    • 三、创建Vue工程化项目
    • 四、认识脚手架目录及文件
    • 五、分析3个入口文件的关系
    • 六、Vue单文件
    • 七、setup简写 + 插值表达式 + 响应式
      • 1. 传统写法
      • 2. 现代写法(推荐)
      • 3. 代码示例
  • Ⅱ. 指令
    • 一、Vue中的常用指令
    • 二、内容渲染指令:`v-html` && `v-text`
    • 三、属性绑定指令:`v-bind`
    • 四、事件绑定指令:`v-on`
    • 五、条件渲染指令:`v-show` && `v-if`
    • 六、列表渲染指令:`v-for`
      • 案例:书架
      • 为什么要给 `v-for` 添加 `key`
    • 七、双向绑定指令:`v-model`

Ⅰ. 脚手架

一、Vue开发方式

1. 传统开发模式

举个例子:

<scriptsrc="https://unpkg.com/vue@3/dist/vue.global.js"></script><script>Vue.createApp({setup(){constmsg='Hello World'return{msg}}}).mount('#app')</script>

判断是否为传统写法的依据:

  • 是否使用new Vue()
    • new Vue({...})是 Vue 2 的标准写法,也是 “全局 Vue 对象 + 根实例” 的模式。
    • 现代 Vue 3 项目里,一般不会直接用new Vue(),而是用createApp(App)来创建应用实例。
  • 是否在 CDN 环境下
    • 如果你直接在浏览器里<script src="https://cdn.jsdelivr.net/.../vue.js"></script>然后写new Vue({...}),通常就是快速 demo / 教学 / 小型页面,不使用模块化打包工具。
  • 语法风格
    • 使用data+methods+Vue.set这种选项式 API,也属于传统开发模式。
    • 现代 Vue 3 推荐使用组合式 API +<script setup>,不需要Vue.set,逻辑可拆分为可复用的 composable 函数。
  • 优点:简单、上手快
  • 缺点:功能单一、开发体验差

2. 工程化开发模式

import{createApp,ref}from'vue'importAppfrom'./App.vue'createApp(App).mount('#app')

在构建工具(Vite/Webpack)环境下开发Vue,这是最推荐的、也是企业采用的方式。其中App.vue是一个单文件组件(SFC),会被构建工具编译成JS模块。

  • 优点:
    • 功能全面
    • 开发体验好
  • 缺点:
    • 目录结构复杂
    • 理解难度提升
特点教学版(CDN)模块化(ES Module)
适用场景快速演示、小项目现代大型项目
引入方式<script src="vue.js">import { createApp } from 'vue'
组件写法直接写在createApp({ setup(){...} })单文件组件.vue,逻辑写在setup()
推荐度初学者实战项目

二、准备工程化环境

1. 安装 Nodejs

官网:https://nodejs.org/en/

node-vnpm-v

npm换源:

// 查看npmnpmconfig get registry // 默认是指向 https://registry.npmjs.org/,也就是官方源 // 为了提高npm下载速度, 可以给npm换源 // 国内源有很多,我这里用淘宝源吧。毕竟是大公司,会比较稳定npmconfigsetregistry https://registry.npmmirror.com // 再一次查看npmnpmconfig get registry

2. 安装 yarn 或 pnpm

yarnpnpm、还有npm三者的功能类似,都是包管理工具,用来下载或删除模块包,性能上yarnpnpm优于npm

# windows系统npminstallyarn-gnpminstallpnpm-g ___________________________________# mac系统sudonpminstallyarn-gsudonpminstallpnpm-g

检测是否安装成功:

yarn-vpnpm-v

三、创建Vue工程化项目

  1. 选定一个存放位置,比如选择桌面,根据自己情况,选择D盘或E盘等
  2. 执行命令npm create vue@latest,会安装并执行 create-vue,它是 Vue 官方的项目脚手架工具
  3. 进入项目根目录:cd 项目名称
  4. 安装 vue 等模块依赖:npm i
  5. 启动项目:npm run dev,会开启一个本地服务器
  6. 浏览器网址栏输入:http://localhost:5173

四、认识脚手架目录及文件

五、分析3个入口文件的关系

  1. main.js:整个项目打包的入口,用于创建应用,是 Vue 代码通向网页代码的桥梁
  2. App.vue:Vue 代码的入口(根组件)
  3. index.html:项目入口网页

六、Vue单文件

  1. vue 推荐采用.vue的文件来开发项目
  2. 一个 vue 文件通常有3部分组成,script(JS)+template(HTML)+style(CSS)
  3. 一个 vue 文件是独立的模块,作用域互不影响
  4. style 部分通常配合scoped属性,保证样式只针对当前template内的标签生效
  5. vue 文件会被vite打包成 js、css 等,最终交给 index.html 通过浏览器呈现效果

七、setup简写 + 插值表达式 + 响应式

1. 传统写法

<script>exportdefault{setup(){// ...constmsg='Hello Vue3+Vite'return{msg}}}</script><template><h1>{{msg}}</h1></template><style></style>

2. 现代写法(推荐)

<script setup>constmsg='Hello Vue3+Vite'</script><template><h1>{{msg}}</h1></template><style></style>

3. 代码示例

<script setup>// 导入响应式函数import{reactive,ref}from'vue'// 字符串constmsg=ref('Hello Vue3+Vite')// 对象constobj=reactive({name:'小vue',age:9})// 函数functionfn(){return100}</script><template><!--1.直接放变量--><h1>{{msg}}</h1><!--2.对象.属性--><p>我叫{{obj.name}},今年{{obj.age}}</p><!--3.三元表达式--><p>{{obj.age>=18?'已成年':'未成年'}}</p><!--3.算数运算--><p>来年我就{{obj.age+1}}岁了</p><!--4.函数的调用--><p>fn的返回值是:{{fn()}}</p><!--4.方法的调用--><p>{{msg}}中含有{{msg.split(' ').length}}个单词</p></template>

Ⅱ. 指令

一、Vue中的常用指令

指令是 Vue 提供的带有v-前缀的特殊标签属性,用来增强标签、提高标签数据渲染的能力。vue3 中的指令按照不同的用途可以分为如下六大类:

  • 内容渲染指令(v-html、v-text)
  • 属性绑定指令(v-bind)
  • 事件绑定指令(v-on)
  • 条件渲染指令(v-show、v-if、v-else、v-else-if)
  • 列表渲染指令(v-for)
  • 双向绑定指令(v-model)

二、内容渲染指令:v-html&&v-text

作用:辅助开发者渲染 DOM 元素的文本内容。

  1. v-text(类似innerText
    • 类似 innerText,使用该语法,只会覆盖 p 标签原有内容,不会解析标签。
  2. v-html(类似innerHTML
    • 类似 innerHTML,使用该语法,不仅会覆盖 p 标签原有内容,还能够将 HTML 标签的样式呈现出来。

代码示例:

<script setup>import{ref}from'vue'conststr=ref('<span style="color:red;">Hello Vue3+Vite</span>')</script><template><div><p v-text="str"></p><p v-html="str"></p></div></template><style scoped></style>

三、属性绑定指令:v-bind

作用:把表达式的结果与标签的属性动态绑定。

语法如下所示:

  • v-bind:属性名="表达式"
  • 可简写成:属性名="表达式"

代码实例:

<script setup>import{ref}from'vue'consturl=ref('http://www.baidu.com')</script><template><div><!--v-bind:标签属性动态绑定--><a v-bind:href="url">百度一下</a><!--简写--><a:href="url">百度一下</a></div></template>

四、事件绑定指令:v-on

作用:给元素绑定事件。

有三种不同语法,以给按钮添加点击事件为例:

<button v-on:事件名="内联语句">按钮</button><button v-on:事件名="处理函数">按钮</button><button v-on:事件名="处理函数(实参列表)">按钮</button>
  • v-on可以简写为@
  • 处理函数需要在<script>下声明

代码示例:

<script setup>import{ref}from'vue'// 响应式数据 计数器constcount=ref(0)// 无参函数constincrease=()=>{count.value++}// 有参函数constadd=(n)=>{count.value+=n}</script><template><div><p>{{count}}</p><!--1.内联语句--><button v-on:click="count++">+1</button><!--2.调用无参函数--><button v-on:click="increase">+1</button><!--3.调用有参函数--><button v-on:click="add(3)">+3</button><button v-on:click="add(5)">+5</button><!--4.简写 @click--><button @click="add(5)">+5</button></div></template>

五、条件渲染指令:v-show&&v-if

作用:辅助开发者控制 DOM 的显示与隐藏。

  1. v-show
    1. 作用:控制元素显示隐藏
    2. 语法:v-show="布尔表达式",表达式值为 true 显示,false 隐藏
    3. 原理:切换display:none控制显示隐藏
    4. 场景:适合需要频繁切换显示隐藏的场景
  2. v-if
    1. 作用:控制元素显示隐藏(条件渲染)
    2. 语法:v-if="布尔表达式",表达式值 true 显示,false 隐藏
    3. 原理:基于条件判断,创建或移除 DOM 元素
    4. 场景:适合不需要频繁切换的场景
  3. v-elsev-else-if
    1. 作用:辅助 v-if 进行判断渲染
    2. 语法:v-else v-else-if="表达式"
    3. 需要紧接着 v-if 使用

代码示例:

<scriptsetup>import{ref}from'vue'// 是否可见constvisible=ref(true)// 是否登录constisLogin=ref(true)// 成绩constmark=ref(100)</script><template><!-- v-show --><divclass="red"v-show="visible"></div><!-- v-if --><divclass="green"v-if="visible"></div><hr><!-- 双分支的条件渲染 --><divv-if="isLogin">xxx, 欢迎回来</div><divv-else>你好, 请登录</div><hr><!-- 多分支的条件渲染: 1. 90及其以上优秀 2. 70到90之间良好 3. 其他的差 --><divv-if="mark >= 90">优秀</div><divv-else-if="mark >= 70">良好</div><divv-else></div></template><stylescoped>.red, .green{width:200px;height:200px;}.red{background:red;}.green{background:green;}</style>

六、列表渲染指令:v-for

作用:基于数组进行遍历列表渲染

v-for指令需要使用(item, index) in 目标结构形式的特殊语法,其中:

  • item:数组中的每一项
  • index:每一项的索引,不需要可以省略
  • 目标结构:被遍历的数组/对象/数字
<script setup>import{ref}from'vue'// 数字数组constnums=ref([11,22,33,44])// 商品列表constgoodsList=ref([{id:1,name:'篮球',price:299},{id:2,name:'足球',price:99},{id:3,name:'排球',price:199}])// 准备对象constobj={id:10001,name:'liren',age:9}</script><template><div><ul><!--遍历数字数组--><li v-for="(item, index) in nums">{{item}}=>{{index}}</li></ul><divclass="goods-list"><!--遍历对象数组--><divclass="goods-item"v-for="item in goodsList"><p>id={{item.id}}</p><p>name={{item.name}}</p><p>price={{item.price}}</p></div><ul><!--遍历对象--><li v-for="(value, key, index) in obj">{{value}}=>{{key}}=>{{index}}</li></ul><ul><!--遍历数字--><li v-for="(item, index) in 5">{{item}}=>{{index}}</li></ul></div></div></template><style scoped></style>

案例:书架

  1. 根据左侧数据渲染出右侧列表(v-for
  2. 点击删除按钮时,应该把当前行从列表中删除(获取当前行的index,利用splice删除)

<!--@format--><script setup>import{ref}from'vue'// 图书列表constbookList=ref([{id:1,name:'《红楼梦》',author:'曹雪芹'},{id:2,name:'《西游记》',author:'吴承恩'},{id:3,name:'《三国演义》',author:'罗贯中'},{id:4,name:'《水浒传》',author:'施耐庵'}])// 删除函数constonDel=(i)=>{// i: 当前点击的下标if(window.confirm('确定删除么?')){// 调用 splice 进行删除bookList.value.splice(i,1)}}</script><template><h3>书架</h3><ul><li v-for="(item, index) in bookList":key="item.id"><span>{{item.name}}</span><span>{{item.author}}</span><button @click="onDel(index)">删除</button></li></ul></template><style>#app{width:400px;margin:100px auto;}ul{list-style:none;}ul li{display:flex;justify-content:space-around;padding:10px0;border-bottom:1px solid #ccc;}</style>

为什么要给v-for添加key

语法::key="唯一值"

作用:给列表项添加的唯一标识,便于 Vue 进行列表项的正确排序复用,因为 Vue 的默认行为会尝试原地修改元素(就地复用)

注意事项:

  1. key的类型只能是数字或字符串
  2. key的值必须唯一, 不能重复
  3. 推荐用id作为key(因为id唯一),不推荐用index作为key(会变化)

七、双向绑定指令:v-model

所谓双向绑定就是:

  1. 数据变了->视图的变化
  2. 视图变了->数据的变化

作用在表单元素(input、select、radio、checkbox)上,实现数据双向绑定,从而可以快速获取或设置表单元素的值。

语法:v-model="响应式数据"

使用双向绑定实现以下需求:

  1. 点击登录按钮获取表单中的内容
  2. 点击重置按钮清空表单中的内容

<script setup>import{reactive}from'vue'// 登录表单对象constloginForm=reactive({username:'',password:''})</script><template><divclass="login-box">账户:<input type="text"v-model="loginForm.username"/><br/><br/>密码:<input type="password"v-model="loginForm.password"/><br/><br/><button>登 录</button><button>重 置</button></div></template>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1205161.shtml

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

相关文章

解读银川职校特色:银川万通职业技术学校社团多吗,体验好不好?

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家宁夏区域标杆职业教育院校,为学子及家长选型提供客观依据,助力精准匹配适配的技能学习伙伴。 TOP1 推荐:银川万通职业技术学校 推荐指数:★★★★★ | 口碑…

什么是随机变量

你有没有遇到过这样的情况&#xff1a;看统计学教材&#xff0c;第一页就写着"随机变量X服从某某分布"。 你立马懵了——变量我懂&#xff0c;随机我也懂&#xff0c;但"随机变量"是个啥玩意儿&#xff1f;为什么还要用X、Y这些字母表示&#xff1f; 得先…

2026上海A-Level培训机构排名及教学质量评估

随着国际化教育的普及,A-Level课程作为英国高中课程体系的重要组成部分,受到越来越多计划留学的学生和家长关注。上海作为教育资源集中的城市,拥有众多提供A-Level培训的机构,选择合适的机构成为学生学业规划中的重…

621-2150输出模块

621-2150 输出模块简介&#xff1a;621-2150 是工业自动化系统中常用的输出模块主要用于将控制系统的指令信号转换为现场可执行的输出信号支持多通道输出&#xff0c;可同时控制多个外部设备常用于驱动继电器、指示灯、电磁阀等执行元件模块通常安装在控制机架或 I/O 底座上使用…

探讨无锡双瑞机械可靠吗,企业实力为你揭秘

2026年化工装备产业向智能化、绿色化转型加速,精制提纯设备的技术水平直接决定企业生产效率、产品质量与安全合规能力。无论是医药行业的GMP无菌生产需求,还是精细化工领域的特殊物料处理痛点,优质设备服务商的核心…

导师推荐8个AI论文工具,助你轻松搞定本科毕业论文!

导师推荐8个AI论文工具&#xff0c;助你轻松搞定本科毕业论文&#xff01; AI 工具助力论文写作&#xff0c;轻松应对学术挑战 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始借助 AI 工具来提升论文写作效率。无论是内容生成、逻辑梳理还是语言润色&#xff0…

幂律分布:为什么这个世界总是“赢家通吃“?

引言 你有没有想过这样一个问题&#xff1a; 为什么有些城市越来越挤&#xff0c;有些城市却越来越空&#xff1f; 为什么抖音上总是那几个大V占据流量榜首&#xff1f; 为什么公司里20%的人创造了80%的业绩&#xff1f; 这些看似毫无关联的现象&#xff0c;背后藏着同一个…

621-6550电源输出模块

621-6550 电源输出模块简介&#xff1a; 621-6550 是工业控制系统中使用的电源输出模块 主要用于为系统内其他模块或现场设备提供稳定电源 可将系统电源进行分配并输出到不同负载 适用于机架式或分布式控制系统结构 与控制器、电源输入模块配合使用 输出电压稳定&#xff…

2026路桥交通/工业园区/地形地貌/建筑规划沙盘模型厂家推荐常州海波模型设计,专业定制,精准呈现

2026路桥交通/工业园区/地形地貌/建筑规划沙盘模型厂家推荐:专业定制如何实现精准呈现 在规划展示、方案论证与决策支持领域,沙盘模型以其直观、立体、可交互的特性,始终扮演着无可替代的角色。无论是宏大的路桥交通…

621-6575控制器输出模块

621-6575 控制器输出模块简介&#xff1a; 621-6575 是工业自动化系统中使用的控制器输出模块 主要用于将控制器的逻辑控制信号输出到现场设备 可实现对执行机构的启停及状态控制 支持多通道输出&#xff0c;满足多点控制需求 常用于驱动继电器、电磁阀、指示装置等 模块通…

上海超级学长怎么样?2026年真实评价与课程体验分享

在上海这座国际化大都市,留学语言培训需求持续攀升,众多学生和家长在选择培训机构时,往往会关注课程质量、师资水平及学习效果等核心因素。如何在琳琅满目的选项中找到适合自己的学习平台,成为许多人面临的实际问题…

621-6575RC输出模块

621-6575RC 输出模块简介&#xff1a;621-6575RC 属于控制系统中的专用输出单元主要承担控制信号向现场设备的执行传递任务模块可根据控制策略输出对应的开关或控制信号适合对外部设备进行精确、有序的控制常配合各类执行元件实现动作控制模块在系统中起到信号放大与隔离的作用…

621-9000逻辑控制器模块

621-9000 逻辑控制器模块简介&#xff1a; 621-9000 是工业自动化系统中的逻辑控制器模块 主要负责系统控制逻辑的运算与处理 可根据输入信号执行预设的控制程序 支持顺序控制、联锁控制等常见控制方式 用于协调各类输入、输出模块的工作 可作为控制系统的核心处理单元使用…

分析大连高精度管道喷涂机设备批发厂家排名,选哪家好?

问题1:什么是专业的砂浆喷涂机生产厂家?选择时需要关注哪些核心指标? 专业的砂浆喷涂机生产厂家是指具备自主研发能力、完整生产体系,并能针对管道工程场景提供定制化设备与技术支持的企业,核心在于设备的适配性、…

多项式板子合集

普通多项式转下降幂多项式/含多项式多点求值/含 vector 版 mul&inv

边缘计算与工业AI:引领企业数字化新潮流 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2026年(最新)抖音代运营公司TOP榜单权威测评推荐

2026 年,抖音短视频代运营行业已步入精细化价值交付阶段:流量红利退潮后,行业从 “规模扩张” 转向 “价值深耕”,品牌方对代运营的需求从 “做内容、涨粉丝” 升级为 “获精准客、提转化量、建私域池”。 本次代运…

吐血推荐!9款AI论文写作软件测评:本科生毕业论文必备

吐血推荐&#xff01;9款AI论文写作软件测评&#xff1a;本科生毕业论文必备 为什么需要一份靠谱的AI论文写作工具测评 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始借助AI写作工具提升论文撰写效率。然而&#xff0c;市面上的AI论文软件种类繁多&#xff0c;功…

UVA10603 倒水问题

老师比赛时的第一题,比较简单,但多测不清空,亲人两行泪(⊙o⊙) 得了70分... 此题比较简单时间限制3.00s 暴力即可,自己看代码吧~: #include<bits/stdc++.h> using namespace std; long long t,a,b,c,d,y…

Sona Systems查看发件箱:浏览与使用群发邮件报告日志

查找您的外发邮件 只需在“群发邮件通知”页面快速一瞥&#xff0c;就能看出 Sona 提供了多少种方式去联系特定的一个或多个群体。 但光凭这一页&#xff0c;却很难知道你昨天&#xff08;或上周、甚至一分钟前&#xff09;到底发了什么邮件、发给了谁。 这时就要用到“群发…