本文介绍Vue框架中涉及的基础指令。

一、基础指令

简单总结下Vue中常用的基础指令。

v-html

设置标签的innerHTML

v-text

设置标签的innerText

v-bind

设置标签的属性节点

v-on

给标签绑定事件,可以使用@语法糖来替代

v-if

条件判断,根据动态数据来创建或销毁对应的标签

v-else

条件判断,通常更在v-if的后面

v-else-if

条件判断,跟在v-if的后面

v-model

双向绑定数据(绑定message到文本输入框的value值)

v-show

是否显示对应的标签(设置样式隐藏)

v-for

循环渲染的指令,主要用于处理对象或者是数组数据

基础指令的代码示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../../Vue/vue.min.js"></script>
</head>
<body> <div id="app1">
<div> {{msg}}</div>
<div v-html="html"></div>
</div> <div id="app2">
<div> {{msg}}</div>
<div v-text="text"></div>
</div><br> <div id="app3">
<div> {{msg}}</div>
<a v-bind:href="src_url">点击我跳转到{{src_url}}页面</a><br>
<a :href="src_url">点击我跳转到{{ url }}页面</a>
</div><br> <div id="app4">
<div> {{msg}}</div>
<input type="text" placeholder="请输入具体的内容..." v-model:value="message">
<span>文本输入框中的内容为:{{message}}</span>
</div><br> <div id="app5">
<div> {{msg}}</div>
<button v-on:click="count1 += 1"> 当前Count的值为 {{ count1 }}</button>
<button v-on:click="countClick"> 当前Count的值为 {{ count2 }}</button>
<button @click="count3 += 1"> 当前Count的值为 {{ count3 }}</button>
</div><br> <div id="app6">
<div>{{msg}}</div>
<div>条件渲染演示[001]</div>
<div v-if="type == '数学'"><p>数学:几何 + 代数</p> </div>
<div v-else-if="type == '语文'"><p>语文:白话文 + 文言文</p></div>
<div v-else><p>其他学科...</p></div> <div>条件渲染演示[002]</div>
<template v-if="ok">
<div>哈哈哈</div>
<div>啦啦啦</div>
<div>嘻嘻嘻</div>
<div>吼吼吼</div>
</template>
<div v-else><div>哎哟 ok的值为false !!!</div> </div>
</div><br> <div id="app7">
<div> {{msg}}</div>
<div v-show="isShow">show指令和if指令的不同在于它通过样式来控制标签是否显示</div>
</div> <script>
new Vue({
el:"#app1",
data:{
msg:"① v-html指令的使用",
html:"<p>我是p标签</p>"
}
}); new Vue({
el:"#app2",
data:{
msg:"② v-text指令的使用",
text:"<p>我是p标签</p>"
}
}); new Vue({
el:"#app3",
data:{
msg:"③ v-bind指令的使用",
src_url:"http://www.wendingding.com"
},
computed:{
url:function () {
return this.src_url.substr("7");
}
}
}); new Vue({
el:"#app4",
data:{
msg:"④ v-model双向数据绑定",
message:"默认的消息"
}
}); new Vue({
el:"#app5",
data:{
msg:"⑤ v-on指令绑定事件监听",
count1:0,
count2:0,
count3:0
},
methods:{
countClick:function () {
this.count2 +=1;
}
}
}); new Vue({
el:"#app6",
data:{
msg:"⑥ v-if v-else v-else-if指令",
type:"哈哈哈",
ok:false
}
}); new Vue({
el:"#app7",
data:{
msg:"⑦ v-show指令",
isShow:false
}
});
</script>
</body>
</html>

这里贴出上面代码的执行情况

<body>
<div id="app1"><div> ① v-html指令的使用</div> <div><p>我是p标签</p></div></div>
<div id="app2"><div> ② v-text指令的使用</div> <div>&lt;p&gt;我是p标签&lt;/p&gt;</div></div><br>
<div id="app3"><div> ③ v-bind指令的使用</div> <a href="http://www.wendingding.com">点击我跳转到http://www.wendingding.com页面</a> <br> <a href="http://www.wendingding.com">点击我跳转到www.wendingding.com页面</a></div><br>
<div id="app4"><div> ④ v-model双向数据绑定</div> <input type="text" placeholder="请输入具体的内容..."> <span>文本输入框中的内容为:默认的消息</span></div><br>
<div id="app5"><div> ⑤ v-on指令绑定事件监听</div> <button> 当前Count的值为 0</button> <button> 当前Count的值为 0</button> <button> 当前Count的值为 0</button></div><br>
<div id="app6"><div> ⑥ v-if v-else v-else-if指令</div> <div>条件渲染演示[001]</div> <div><p>其他学科...</p></div> <div>条件渲染演示[002]</div> <div><div>哎哟 ok的值为false !!!</div></div></div><br>
<div id="app7"><div> ⑦ v-show指令</div> <div style="display: none;">show指令和if指令的不同在于它通过样式来控制标签是否显示</div></div>
</body>

二、列表渲染指令

v-for指令根据一组数组|对象的选项列表来进行渲染。

v-for 指令需要使用item in items形式的特殊语法,其中items是数据源(可以是数组、对象或者是数字),item是当前正在迭代的数据别名(代表当前的元素或者是value值)。

列表渲染指令执行示例

列表渲染指令代码示例

<body>
<div id="app1">
<div>{{msg}}</div>
<ul>
<li v-for="n in 3">{{n}}</li>
</ul>
</div> <div id="app2">
<div>{{msg}}</div>
<ul>
<li v-for="(item,index) in itemData"> index-{{ index}} - item-{{item}}</li>
</ul>
</div> <div id="app3">
<div>{{msg}}</div>
<ul>
<li v-for="(value,key,index) in object"> index:{{ index }} - key:{{key}} -value:{{value}}</li>
</ul>
</div> <div id="app4">
<div>{{msg}}</div>
<ul>
<li v-for="item in itemData" :key="item.id"> ID:{{item.id}} Text:{{item.text}} Other:{{OtherData}}</li>
</ul>
</div> <script>
new Vue({
el:"#app1",
data:{
msg:"① 使用for指令处理数字"
}
}); new Vue({
el:"#app2",
data:{
msg:"② 使用for指令处理数组",
itemData:["语文","数学","钢琴"]
}
}); new Vue({
el:"#app3",
data:{
msg:"③ 使用for指令处理对象",
object:{
age:"33",
name:"阿牛",
demo:"初恋红豆冰"
}
}
}); new Vue({
el:"#app4",
data:{
msg:"④ 使用for指令处理对象数组",
itemData:[
{id:1,text:"住进布达拉宫,我是雪域最大的王"},
{id:2,text:"流浪在拉萨街头,我是世间最美的情郎"},
],
OtherData:"Test-Other 数据"
}
})
</script>

v-for指令的使用注意点

> ✦ 可以用 of 替代 in 作为分隔符。
> ✦ 数据源可以取整数,它将重复多次模板。
> ✦ 可以利用带有 v-for 的`template`渲染多个元素
> ✦ 在v-for模块中拥有对父作用域属性的完全访问权限。
> ✦ 迭代数组的时候,支持一个可选的第二个参数为当前项的索引。
> ✦ 迭代对象的时候,支持一个可选的第二个参数为当前项的键名,第三个参数为当前项的索引。
> ✦ 遍历对象的时候,按照`Object.keys()`[Object的静态方法用于获取对象所有的key]的结果处理。
> ✦ 在更新已渲染元素时默认用“就地复用”策略,高策略高效但有适用范围,可以通过设置key解决。
> ✦ 当在组件中使用 v-for 时,key 现在是必须的[2.2.0 + 版本]。

❖ 数组的更新检测

Vue 包含一组观察数组的变异方法(push[追加元素]、pop[弹出元素]、shift[删除第一个元素]、unshift[在数组前插入N个元素]、splice[添加|替换|删除元素]、reverse[翻转元素]、sort[排序]),调用它们的时候将会触发视图更新。

变异方法:上面这些方法被称为变异方法的原因是它们在使用的时候会改变原始数组的数据。

非变异方法:相对的,数组操作中不会改变原始数组的方法如(filter[过滤], concat[合并] 和 slice[截取])被称为非变异方法,它们大多会返回一个新的数组。当调用非变异方法来处理Vue实例中的数据时,视图并不会更新。如果需要和视图同步,可以考虑使用新数组替换旧数组(app4.itemData = app4.itemData.slice(2))。

另外,数组无法监测到 ①利用索引直接设置元素 ② 修改数组的长度 这两种情况下的数组变动。

具体的解决方案

//① 通过索引来设置数组中的元素并更新视图
//vm.items[indexOfItem] = newValue
Vue.set(vm.items, indexOfItem, newValue); //方式(1)
vm.items.splice(indexOfItem, 1, newValue); //方式(2)
vm.$set(vm.items, indexOfItem, newValue); //方式(3) //② 修改数组长度并更新视图
//vm.items.length = newLength
vm.items.splice(newLength)

❖ 对象的更新检测

由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除操作。也就是说,对于已经创建的实例,Vue 不能动态添加根级别的响应式属性。

//向嵌套对象添加响应式属性的方式:两种方法等价
Vue.set(object, key, value);
Vue.$set(object, key, value)

前端开发系列048-基础篇之Vue的基础指令的更多相关文章

  1. 1.基础篇之vue入门

    为了建立高效团队,很多公司会采用全栈工程师,虽然利弊兼有,对于成本优先的创业团队,肯定是首选,特别是对.net生态圈,大部分都是小公司,就更加重要了.这里记录的是对vue的学习点滴,希望对你有所助力. ...

  2. openlayers5-webpack 入门开发系列一初探篇(附源码下载)

    前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...

  3. leaflet-webpack 入门开发系列一初探篇(附源码下载)

    前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...

  4. Pyhton开发【第五篇】:Python基础之杂货铺

    Python开发[第五篇]:Python基础之杂货铺   字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进 ...

  5. 【Windows10 IoT开发系列】配置篇

    原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry ...

  6. 前端开发工程师 - 02.JavaScript程序设计 - 第1章.基础篇

    第1章--基础篇 JS介绍 html 网页的内容:css 网页的样式:javascript 网页的行为 i.e. hello world <!DOCTYPE html> <html& ...

  7. [置顶]【实用 .NET Core开发系列】- 导航篇

    前言 此系列从出发点来看,是 上个系列的续篇, 上个系列因为后面工作的原因,后面几篇没有写完,后来.NET Core出来之后,注意力就转移到了.NET Core上,所以再也就没有继续下去,此是原因之一 ...

  8. 旨在脱离后端环境的前端开发套件 - IDT Server篇

    IDT,一个基于Nodejs的,旨在脱离后端环境的前端开发套件,目的就是能让前端开发完全脱离后端的环境,无论后端是什么模板引擎(主流),都能应付自如. IDT主要包括两大部分:Server + Bui ...

  9. 前端开发【第2篇:CSS】

    鸡血 样式的属性多达几千个,但别担心,按照80-20原则,常用的也就几十个,你完全可以掌握它. Css初识 HTML的诞生 早期只有HTML的时候为了让HTML更美观一点,当时页面的开发者会把颜色写到 ...

  10. openlayers4 入门开发系列之风场图篇

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

随机推荐

  1. C#实例判空

  2. MaxKB web 站点知识库选择器的花样玩法

    背景:MaxKB 创建知识库支持"web 站点"的这种形式,但是很多同学不知道怎么录入选择器来针对性的获取某一部分内容. 1. 选择器作用 选择器用于定位网页中特定的元素,以便获取 ...

  3. element ui select组件 实现鼠标悬浮 自动展开选项

    利用鼠标悬浮事件: 同样的原理也可以设置鼠标移开自动关闭

  4. Electron35-DeepSeek桌面端AI系统|vue3.5+electron+arco客户端ai模板

    2025跨平台ai实战electron35+vite6+arco仿DeepSeek/豆包ai流式打字聊天助手. electron-deepseek-chat:实战ai大模型对话,基于vue3.5+el ...

  5. [设计模式/Java] 设计模式之门面模式(外观模式)【20】

    概述 : 门面模式 := 外观模式 := Facade Pattern 产生背景 软件开发过程中,我们经常会遇到复杂系统,其中包含多个子系统和接口.在这种情况下,为了简化客户端的调用过程,提高代码的可 ...

  6. NetSpectre:通过网络读取任意内存

    摘要 推测执行是现代处理器能够实现高性能的一个关键因素.在推测执行过程中,处理器可能会执行程序一般不会执行到的操作.如果推测执行被中止,这些操作对体系结构的影响和结果会被丢弃,但对微架构的影响可能会保 ...

  7. tomcat-shell脚本

    自动部署项目脚本参考: #!/bin/bash#自动部署脚本source /etc/profileexport LANG=zh_CN.UTF-8#tomcat路径tomcatBinPath=/usr/ ...

  8. EFCore——树形结构篇

    1.整体数据量不大的场景 参照:EntityFramework Linq 查询数据获得树形结构-YES开发框架网 (yesdotnet.com) 核心方法GetChildData,特点将所有的数据查到 ...

  9. VMware workstation 部署微软MDT系统

    一.环境准备 1. VMware Workstation 虚拟机配置 新建虚拟机 类型:Microsoft Windows Server 2022 Standard 内存:4GB+ 硬盘:100GB( ...

  10. 制作一个炫酷的多小球碰碰的 JS 网页,入门物理碰撞模拟和类的应用

    目录 前言 先画一个圆 完善我们的类 小球动起来 最简单的碰撞计算,接触墙壁反弹 向量类的完善 检测两小球之间的碰撞 完善碰撞的效果 重复计算的问题 撞击墙壁定格问题 内存问题 随机数生成多个小球 参 ...