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

【深入学习Vue丨第二篇】构建动态Web应用的基础

前言

Vue模板语法是一种基于HTML的扩展语法,它允许开发者声明式地将数据绑定到DOM。与传统的字符串模板或JSX不同,Vue模板更接近原生HTML,学习曲线平缓,同时提供了强大的数据绑定和逻辑控制能力。

模板语法基础

文本插值

最基本的模板语法是"Mustache"语法(双大括号),用于数据绑定:

<div id="app"><p>{{ message }}</p><!-- 一次性插值 --><span v-once>{{ message }}</span>
</div>
new Vue({el: '#app',data: {message: 'Hello Vue!'}
})

2. 原始HTML

双大括号会将数据解释为普通文本,如果要输出真正的HTML,需要使用v-html指令:

<div id="app"><p>{{ rawHtml }}</p><!-- 输出真正的HTML --><p v-html="rawHtml"></p>
</div>
new Vue({el: '#app',data: {rawHtml: '<span style="color: red">红色文字</span>'}
})

指令详解

指令是带有v-前缀的特殊属性,其值预期是单个JavaScript表达式

1. 条件渲染

<div id="app"><!-- v-if 条件渲染 --><p v-if="isVisible">你可以看到我</p><p v-else>你看不到上面的内容</p><!-- v-show 条件显示 --><p v-show="isShow">我总是被渲染,只是可能不显示</p><!-- 多个条件判断 --><div><p v-if="type === 'A'">类型A</p><p v-else-if="type === 'B'">类型B</p><p v-else>其他类型</p></div>
</div>
new Vue({el: '#app',data: {isVisible: true,isShow: false,type: 'A'}
})

v-if vs v-show:

  • v-if是真正的条件渲染,元素会被销毁和重建

  • v-show只是切换CSS的display属性

  • if有更高的切换开销,v-show有更高的初始渲染开销

2. 列表渲染

使用v-for指令基于数组或对象渲染列表:

<div id="app"><!-- 数组渲染 --><ul><li v-for="(item, index) in items" :key="item.id">{{ index + 1 }}. {{ item.name }}</li></ul><!-- 对象渲染 --><ul><li v-for="(value, key, index) in userInfo">{{ index + 1 }}. {{ key }}: {{ value }}</li></ul><!-- 使用计算属性过滤列表 --><ul><li v-for="item in filteredItems" :key="item.id">{{ item.name }}</li></ul>
</div>

3.事件处理

使用v-on指令(简写@)监听DOM事件:

<div id="app"><!-- 直接执行方法 --><button @click="sayHello">点击我</button><!-- 内联JavaScript语句 --><button @click="count++">计数: {{ count }}</button><!-- 传递参数 --><button @click="saySomething('Hello!')">打招呼</button><!-- 访问原始DOM事件 --><button @click="warn('表单不能提交', $event)">提交</button><!-- 事件修饰符 --><form @submit.prevent="onSubmit"><input type="text"><button type="submit">提交</button></form><!-- 按键修饰符 --><input @keyup.enter="submitForm" placeholder="按回车提交">
</div>
new Vue({el: '#app',data: {count: 0},methods: {sayHello() {alert('Hello!')},saySomething(message) {alert(message)},warn(message, event) {if (event) {event.preventDefault()}alert(message)},onSubmit() {alert('表单已提交')},submitForm() {alert('表单通过回车提交')}}
})

4. 表单输入绑定

使用v-model指令在表单元素上创建双向数据绑定:

<div id="app"><!-- 文本输入 --><input v-model="message" placeholder="编辑我"><p>输入的内容: {{ message }}</p><!-- 多行文本 --><textarea v-model="multilineText"></textarea><p style="white-space: pre-line">{{ multilineText }}</p><!-- 复选框 --><input type="checkbox" id="checkbox" v-model="checked"><label for="checkbox">{{ checked }}</label><!-- 多个复选框 --><div><input type="checkbox" id="jack" value="Jack" v-model="checkedNames"><label for="jack">Jack</label><input type="checkbox" id="john" value="John" v-model="checkedNames"><label for="john">John</label><input type="checkbox" id="mike" value="Mike" v-model="checkedNames"><label for="mike">Mike</label><p>选中的人: {{ checkedNames }}</p></div><!-- 单选按钮 --><div><input type="radio" id="one" value="One" v-model="picked"><label for="one">One</label><input type="radio" id="two" value="Two" v-model="picked"><label for="two">Two</label><p>选中的值: {{ picked }}</p></div><!-- 选择框 --><div><select v-model="selected"><option disabled value="">请选择</option><option>A</option><option>B</option><option>C</option></select><p>选中的值: {{ selected }}</p></div>
</div>
new Vue({el: '#app',data: {message: '',multilineText: '',checked: false,checkedNames: [],picked: '',selected: ''}
})

修饰符:

.lazy - 转为在change事件后同步

.number - 将输入值转为数值类型

.trim - 自动过滤输入的首尾空白字符

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

相关文章:

  • 怎么给网站做apiwordpress oss 静态
  • wordpress可以制作什么网站wordpress页面图片如何排版
  • 无纸化 SOP 怎么实现?电子厂作业指导书方案拆解!
  • 【穿越Effective C++】条款13:以对象管理资源——RAII原则的基石
  • 郑州 手机网站制作怎样建设个自己的网站
  • 网站 搜索引擎 提交网站建设百度云资源
  • 打工人日报#20251105
  • 激光导引头核心技术全解析与系统学习指南
  • 福永做网站wordpress 图片分享主题
  • 淘宝客网站如何让做简述网站制作的一般流程
  • 解决 GORM + MySQL 5.7 报错:Error 1067: Invalid default value for ‘updated_at‘
  • 东城专业网站建设公司网站首页设计过程
  • 租用服务器做视频网站前端代码生成器
  • Hi6000C原厂技术支持智芯一级代理聚能芯半导体高精度模拟调光升压LED恒流驱动器工作电压5-40V
  • 专业网站设计网站专业网站建设推荐
  • 网站开发框架排行中标查询
  • HTTP方法
  • 苹果企业签名流程
  • 有个网站是做视频相册的网站怎么做移动端的
  • 午夜做网站建设工程专注在哪个网站
  • 以太坊的“燃油费”:详解Gas、Gas Price与Gas Limit
  • 嵌入式项目:韦东山驱动开发第六篇 项目总结——显示系统(framebuffer编程)
  • MySQL的NOW()函数详解
  • 郑州做网站企起广东建设官方网站
  • HTML5 中常用的语义化标签及其简要说明
  • 开源企业网站内容管理系统wordpress 虚拟数据
  • 网站制作方案和主要内容新网网站制作
  • 网站前台页面的设计与实现东阳自适应网站建设
  • 南山附近公司做网站建设多少钱wordpress站点地址和
  • CentOS7配置DHCP服务器全攻略