JavaWeb03-Vue

news/2025/11/7 20:28:18/文章来源:https://www.cnblogs.com/Sunyn-blogs/p/19200810

Vue

什么是Vue

  • Vue是一款用于构建用户界面渐进式的JavaScript框架。(http://cn.vuejs.org/)

    • 构建用户界面

    image

    • 渐进式

      image

    • 框架:就是一套完整的项目解决方案,用于快速构建项目

      • 优点:大大提升前端项目的开发效率
      • 缺点:需要理解记忆框架的使用规则

1.Vue快速入门

image

  • 准备
    • 引入Vue模块
    • 创建Vue程序的应用实例,控制视图的元素
    • 准备元素(div),被Vue控制
  • 数据驱动视图
    • 准备数据
    • 通过插值表达式渲染页面

image

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Vue快速入门</title>
</head>
<body><div id="app"><h1>{{message}}</h1><h1>{{count}}</h1>
</div><script type="module">import { createApp, ref } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';createApp({data(){return {message:'Hello Vue',count:100}}}).mount('#app');
</script>
</body>
</html>

2.Vue常用指令

  • 指令:HTML标签上带有 v-前缀的特殊属性,不同的指令具有不同的含义,可以实现不同的功能

    image

  • 常用指令

    image

案例:

image

v-for

  • 作用:列表渲染,遍历容器的元素或者对象的属性

  • 语法:

    <tr v-for = "(item,index) in items" :key="item.id">{{item}}</tr>
    
  • 参数说明:

    • items为遍历的数组
    • item为遍历出来的元素
    • index为索引/下标,从0开始;可以省略,省略index语法: v-for = "item in items"
  • key

    • 作用:给元素添加唯一标识,便于vue进行列表项的正确排序复用,提升渲染性能
    • 推荐使用id作为key(唯一),不推荐使用index作为key(会变化,不对应)

注意:遍历的数组,必须在data中定义;要想让哪个标签循坏展示多次,就在哪个标签上使用 v-for 指令。

<body>
<!-- 头部区域 -->
<div id = "container"><div class="header"><h1>Tlias智能学习辅助系统</h1><a href="#" class="logout">退出登录</a></div><!-- 搜索区域 --><div class="search-area"><label>姓名:</label><input type="text" placeholder="请输入姓名"><label>性别:</label><select><option value="">请选择</option><option value="1">男</option><option value="2">女</option></select><label>职位:</label><select><option value="">请选择</option><option value="1">职位1</option><option value="2">职位2</option></select><button>查询</button><button>清空</button></div><!-- 表格区域 --><div class="table-area"><table><thead><tr><th>序号</th><th>姓名</th><th>性别</th><th>头像</th><th>职位</th><th>入职日期</th><th>最后操作时间</th><th>操作</th></tr></thead><tbody><tr v-for = "(e,index) in empList" :key="e.id"><td>{{index + 1}}</td><td>{{e.name}}</td><td>{{e.gender == 1 ? '男' : '女'}}</td>
<!--        插值表达式是不能出现在标签内部的--><td><img class="avatar" src="{{e.image}}" alt="e.name"></td><td>{{e.job}}</td><td>{{e.entrydate}}</td><td>{{e.updatetime}}</td><td class="action-buttons"><button type="button">编辑</button><button type="button">删除</button></td></tr></tbody></table></div><!--初始化Vue实例--><script type="module">import { createApp, ref } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';createApp({data(){return{empList:[{"id": 1,"name": "谢逊","image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2023/4.jpg","gender": 1,"job": "1","entrydate": "2023-06-09","updatetime": "2024-09-30T14:59:38"},{"id": 2,"name": "韦一笑","image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2023/1.jpg","gender": 1,"job": "1","entrydate": "2020-05-09","updatetime": "2024-09-01T00:00:00"},{"id": 3,"name": "黛绮丝","image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2023/1.jpg","gender": 2,"job": "2","entrydate": "2021-06-01","updatetime": "2024-09-01T00:00:00"}]}}}).mount('#container')</script>

效果:

image

v-bind

  • 作用:动态为HTML标签绑定属性值,如设置herf,src,style样式等。

  • 语法:v-bind:属性名 = “属性值”

    <img v-bind:src="item.image" width="30px">
    
  • 简化: :属性名=“属性值”

    <img :src="item.image" width="30px">
    

注意:动态的为标签的属性绑定值,不能使用插值表达式,得使用 v-bind 指令。且绑定的数据,必须在data中定义、

在上面我们提到插值表达式是不能出现在标签内部的

这时候就可以使用v-bind指令了 上图我们知道图片无法显示,因为插值表达式用在了标签内部,将上面的代码稍加修改,改为:

<tr v-for = "(e,index) in empList" :key="e.id"><td>{{index + 1}}</td><td>{{e.name}}</td><td>{{e.gender == 1 ? '男' : '女'}}</td><td><img class="avatar" v-bind:src="e.image" :alt="e.name"></td><td>{{e.job}}</td><td>{{e.entrydate}}</td><td>{{e.updatetime}}</td><td class="action-buttons"><button type="button">编辑</button><button type="button">删除</button></td></tr>

效果:

image

v-if & v-show

  • 作用:这两类指令,都是用来控制元素的显示与隐藏的

  • v-if

    • 语法:v-if=“表达式”,表达式值为true,显示;false,隐藏
    • 原理:基于条件判断,来控制创建或移除元素节点(条件渲染)
    • 场景:要么显示,要么不显示,适用于不频繁切换的场景
    • 其他:可以配合v-else-if / v-else 进行链式调用条件判断
    <span v-if="gender == 1">男生</span>
    <span v-else-if="gender == 2">女生</span>
    <span v-else>未知</span>
    
  • v-show

    • 语法:v-show=“表达式”,表达式值为 true,显示;false,隐藏
    • 原理:==基于CSS样式display来控制显示与隐藏
    • 场景:适用于频繁切换显示隐藏的场景

注意:v-else-if必须出现在v-if之后,可以出现多个;v-else 必须出现在v-if/v-else-if之后。

展示职位:

image

<!--        v-if:控制元素的显示与隐藏--><td><span v-if="e.job == 1">班主任</span><span v-else-if="e.job == 2">讲师</span><span v-else-if="e.job == 3">学工主管</span><span v-else-if="e.job == 4">教研主管</span><span v-else-if="e.job == 5">咨询师</span><span v-else>其他</span></td>

image

<td><span v-show="e.job == 1">班主任</span><span v-show="e.job == 2">讲师</span><span v-show="e.job == 3">学工主管</span><span v-show="e.job == 4">教研主管</span><span v-show="e.job == 5">咨询师</span></td>

image

可以观察到v-show通过将display属性置为none来管理是否显示该属性

v-model

  • 作用:在表单元素上使用,双向数据绑定。可以方便的获取 或 设置表单项数据
  • 语法:v-momel=“变量名”

image

注意:v-model中绑定的变量,必须在data中定义。

首先在Vue实例中更新:

<script type="module">import { createApp, ref } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';createApp({data(){return{empList:[{"id": 1,"name": "谢逊","image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2023/4.jpg","gender": 1,"job": "1","entrydate": "2023-06-09","updatetime": "2024-09-30T14:59:38"},{"id": 2,"name": "韦一笑","image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2023/1.jpg","gender": 1,"job": "1","entrydate": "2020-05-09","updatetime": "2024-09-01T00:00:00"},{"id": 3,"name": "黛绮丝","image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2023/1.jpg","gender": 2,"job": "2","entrydate": "2021-06-01","updatetime": "2024-09-01T00:00:00"}],searchForm:{ //封装用户输入的查询条件name:'',gender:'',job:''}}}}).mount('#container')</script>

可见我们添加了一个searchForm 用来封装用户输入的查询条件 这个与上面的empList平级

然后我们用v-model来绑定数据

image

将封装的姓名 性别 职位 从上面的搜索区域用v-model进行封装

我们可以image

显示一下searchForm里面的内容

image

可以看到我们从视图中输入数据时,数据模型中的数据

发生变化;当我们从数据模型中输入数据时,视图中的数据也会发生变化。这就是v-model将数据进行了双向数据绑定!

v-on

  • 作用:为html标签绑定事件(添加事件监听)

  • 语法:

    • v-on:事件名=“方法名”
    • 简写为 @事件名=“...”
    <div id="app"><button type="button" v-on:click="handle">点我</button><button type="button" @click="handle">再点我</button>
    </div>
    

    image

    注意:methods 与 data平级

    在相应按钮上添加v-on指令,指定哪个按钮,方法名为search

    <button v-on:click = "search">查询</button>
    

    编写对应方法:

    image

    image

    可以看到,我们输入相应信息,点击查询后,右下角的控制台中出现了对应信息。

    同样,将清空按钮添加指令:

    <button @click = "clear">清空</button>
    

    image

​ 点击清空后,可将数据置为空

注意:methods函数中的this指向Vue实例,可以通过this获取到data中定义的数据。

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

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

相关文章

【完结】Weblogic中间件应用服务器

【完结】Weblogic中间件应用服务器 学习地址:……/s/1FP9WOZ9FXcNRJTkaEApaVA 提取码:o2rh 在当今瞬息万变的数字商业世界中,企业应用的稳定性、安全性与高可用性已成为支撑业务运转的生命线。在这条无形的战线上,…

调整包含特定文本的单元格所在的行高

Sub 调整包含特定文本的单元格所在的行高()For i = 1 To Range("a" & 1048576).End(xlUp).RowIf Range("a" & i).Value Like "健康管理意见建议*" ThenRange("a" &am…

javabean和pojo的区别

JavaBean 是一种JAVA语言写成的可重用组件。 它的方法命名,构造及行为必须符合特定的约定:这个类必须有一个公共的缺省构造函数。 这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。 这个类应是可序…

一次十分折腾的系统迁移:BCD损坏(0xc000000f), 0xc0000255, 0xc000000e以及解决办法

起因:原装盘内存不够(matebook13原装256G,我用了五六年了,80G传奇c盘使我的所有朋友难绷),想着自己换一块512G的 两块都是WD的盘,兼容没问题 盲目信任自己的技术力和Qwen3的能力,于是开始快乐的装盘过程~ 期间…

2025微信小店代运营/电商优质服务商推荐榜:健安道领衔,三大实力机构助力商家全域增长

2025 年微信电商生态持续扩容,微信小店凭借公私域联动优势实现 GMV 同比激增 192%,成为商家线上布局的核心阵地。本次推荐聚焦真实靠谱的微信小店服务商,精选 3 家实力企业,为品牌提供清晰的合作参考。 健安道企业…

知识树

1 (重点)dp 1.1 常规 dp 1.1.1 选择 dp 主体,缩减状态 1.1.2 前缀和/差分(包括高阶)优化 1.1.3 改变转移顺序 1.1.4 贡献特殊处理 1.2 特殊结构上 dp 1.2.1 树形 dp树上背包 连通块问题 长剖优化 dp 虚树 dp1.2.2…

2025昆山/太仓/苏州/常熟/上海/农村自建房推荐榜 巨德翔建筑领衔 三家实力公司赋能乡村宜居生活

随着长三角地区乡村居住需求升级,自建房因个性化、实用性成为众多家庭的选择。为方便昆山、太仓、苏州、常熟、上海等地用户挑选靠谱服务商,整理 2025 自建房推荐榜,聚焦口碑企业,为居住升级提供参考。 一、昆山巨…

深入解析:ST-Raptor:无需微调,准确率超越 GPT-4o 的半结构化表格问答新范式

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

2025苏州自建房/阳光房/封阳台/瑞纳斯/海达胶条/高端/推拉/无缝焊接/瑞纳斯五金/隔热/系统门窗品质推荐榜:昆山巨德翔门窗领衔,3 家靠谱厂家守护舒适居住空间

在居住品质升级的当下,系统门窗作为家居核心部件,其隔音隔热、安全耐用等性能直接影响生活体验。2025 年,苏州及周边地区涌现出一批专注品质的系统门窗服务商,本次推荐榜精选 3 家口碑过硬、服务贴心的企业,为有需…

2025北京一对一辅导/补习/培训/家教/网课推荐榜:金博教育领衔,3家优质机构凭个性化服务出圈,适配多元学习需求

在北京的学习提升场景中,北京一对一辅导、北京一对一补习、北京一对一培训已成为学子精准补弱、高效提分的重要选择。2025 年,市场上深耕教学品质与服务体验的机构脱颖而出,本次推荐榜聚焦真实办学实力与口碑,精选…

2025河南卫校推荐榜:漯河卫生中等专业学校领衔,周口 / 郑州优质中专学校盘点,适配漯河 / 南阳 / 信阳等多地学子选择

在河南漯河、周口、郑州、南阳等多地,优质卫校与中专学校成为众多学子的重要选择。为帮助大家精准挑选,本文整理 2025 年口碑出众的 3 所卫生类中专学校,所有推荐均基于真实办学情况,无营销导向,供漯河、驻马店、…

树上拓扑序个数小记

树上拓扑序个数小记 给定一棵有根外向树,要求对拓扑序个数计数。 设 \(f(x)\) 表示子树 \(x\) 的拓扑序个数,容易写出以下转移(先确定每个子树的拓扑序,再将它们分配): \[f(x)= (sz_x-1)!\prod_{v\in son(x)} \d…

2025修护/去屑/香氛/控油蓬松/洗发水推荐榜:玛丝兰领衔,三款品牌解锁高效洗护,温和适配多发质

在洗护需求日益精细化的 2025 年,修护受损发丝、精准去屑、长效留香成为大众核心诉求。本次推荐聚焦三款真实可靠的洗发水品牌,以成分安全、功效务实为筛选标准,其中玛丝兰凭借全场景覆盖优势登顶五星推荐,另有两款…

2023最新Win10/Win11运行罪恶都市解决方案

心血来潮想玩一玩很久之前的游戏《侠盗猎车手罪恶都市》,游戏来源为Steam正版,下载安装运行后发现一直报错玩不了,当时报错忘记截图了只记得这串错误信息:Unhandled Exception:c0000005,网上找了好久资料四处收集…

Typecho Joe 使用第三方插件开启文章侧边导肮目录 - AutocJS

原作者博客:https://www.ydyno.com 原文章地址:https://www.ydyno.com/archives/1331.html 开源项目地址:https://github.com/yaohaixiao/outline.js 原作者非常给力,解决了Typecho的一个痛点:没有导航目录,这里…

2025废气处理/废气治理/环保/污水/分子筛/除臭设备推荐榜:深城环保五星领跑,3 家企业以技术适配解锁多元异味治理场景

2025年环保治理需求持续升级,除臭设备尤其是分子筛除臭设备因高效低耗成为行业刚需。本次推荐榜基于技术实力、落地案例与行业口碑筛选,聚焦真实服务能力,为不同场景异味治理提供参考。 上海深城环保设备工程有限公…

使用 Docker 搭建 Typecho 个人博客

Typecho 是一款开源的博客项目、它轻量精美且五脏俱全,在这里分享一下搭建过程希望可以帮到别人,文章中涉及到的文件都会提供下载地址,如果忘记放置链接或者失效请联系我补充 本文会分享三种基于 Docker 搭建 Typec…

P6954 [NEERC 2017] Connections 题解

P6954 [NEERC 2017] Connections 题解P6954 [NEERC 2017] Connections 题解 题目链接 我的博客 前言 本篇总结:清空! 思路 因为删边之后还需要保证所有强连通关系不变,所以我们可以想到所有强连通分量之间的边一定可…

高级程序语言设计个人作业第四次

这个作业属于哪个课程 <班级的链接>这个作业要求在哪里 <作业链接>学号 092300303姓名 池博洋@目录运行程序(1)(2)求π近似值while方式:do while方式:实现逻辑表达式中的运算符for循环输出六行for循…

AI的泡沫与机遇:从技术神话到现实挑战

标签:AI发展, 就业市场, 技术反思, 行业趋势最近刷到一堆AI相关的新闻,感觉这玩意儿真是火得不行,但仔细一看,里面藏着不少值得琢磨的东西。一边是牛津研究院说AI能力可能被测试夸大,另一边阿里巴巴和谷歌又在疯狂…