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

十分钟上手vue!

Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。

一 vue.js的导入及使用

vue安装有三种方式:

1.独立版本:我们可以在 Vue.js 的官网上直接下载 vue.min.js 并用 <script> 标签引入

2.使用 CDN 方法

3.NPM 方法

由于国内CDN都不是很稳定, npm安装又很慢(一般都会使用淘宝镜像),相对而言都比较麻烦,因此我们这里使用第一种方法,也就是直接通过<script>标签引用。

我们可以直接从v2.vuejs.org/js/vue.min.js下载,也可以通过本文下载资源。

下载完成后,我们就可以得到一个js文件。它的使用方式和其他js文件是一样的,我们可以在VS code中创建一个html页面,通过 <script>引入

 接下来,我们需要定义一个vue对象,并指定其接管的对象,需要注意这里的 <script>需要在body之后。

<script>// 定义vue对象new Vue({el:"#app", // vue接管的对象data:{} ,methods: {}})
</script>

el所指定的就是vue接管的对象,可以是id,也可以是class,data内是各种数据信息,methods存放的是各种函数。

 接下来让我们简单测试一下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue快速入门</title><script src="js/vue.js"></script>
</head>
<body><div id="app"><input type="text" v-model="message"><div>{{message}}</div></div>
</body>
<script>// 定义vue对象new Vue({el:"#app", // vue接管的对象data:{message:"Hello Vue"} ,methods: {}})
</script>
</html>

 如果你的页面是这样,就说明引入成功了。细心的小伙伴们可能发现,当我们在输入框中输入内容时,下面div中的内容也随着改变了,这就是v-model的作用:实现双向绑定。

二 vue模板语法

1.文本(插值)

使用 {{...}}(双大括号)可以插入文本,文本内容需要提前在data中定义,如上例中的message

<div id="app"><p>{{ message }}</p>
</div>

2.Html

使用 v-html 指令用于输出 html 代码。

<div id="app"><div v-html="message"></div>
</div><script>
new Vue({el: '#app',data: {message: '<p>我是需要插入的内容</p>'}
})
</script>

3.属性

使用 v-bind 指令为标签绑定属性值,如设置样式等

通常我们直接省略掉v-bind

 <div id="app"><a v-bind:href="url">跳转到我的csdn</a><a :href="url">跳转到我的csdn</a></div>

4.双向绑定

使用v-model实现在表单元素上创建数据双向绑定。

<div id="app"><input type="text" v-model="message"><div>{{message}}</div>
</div>

5.事件绑定

v-on为标签绑定事件。可以简写为@。

 6.条件判断

v-if,v-else-if,v-else 条件性的渲染某元素,只渲染满足条件的元素

v-show 根据条件切换元素的display样式,决定是否展示该元素

<div>年龄<input type="text" v-model="age">经判断,为<span v-if="age<=35">年轻人</span><span v-else-if="age<=60 && age>35">中年人</span><span v-else>老年人</span>
</div>
<div>年龄<input type="text" v-model="age_2">经判断,为<span v-show="age_2<=35">年轻人</span><span v-show="age_2<=60 && age_2>35">中年人</span><span v-show="age_2>60">老年人</span>
</div>

7.循环遍历

v-for 列表渲染,遍历元素或者对象的属性。index为数组元素的索引值,从0开始。

<div v-for="(arr,index) in arr">{{index + 1}}:{{arr}}</div>

三  使用vue语句实现简单的表格渲染

要求说明:现有数据如下,请将该数据以表格的形式展现出来,如

users:[{name:"Tom",age:18,gender:1,score:78},{name:"Rose",age:16,gender:2,score:90},{name:"Jerry",age:16,gender:2,score:59},{name:"Jack",age:18,gender:1,score:90}
]

 分析:

观察数据,我们可以发现数据集是一个4行4列的表格,再加上编号值和等级评定,我们需要构建一个5*6的表格,但是表格除表头外,其他数据都可以从数组中获取到,因此我们可以只创建一个2*6的表格,使用v-for循环遍历数组内容,得到表格的主体部分

但是我们又发现,性别(gender)部分数组中是使用1和2进行标识的,但是我们肯定需要显示出来“男”和“女”,该怎么进行转换呢?我们自然想到了v-if和v-show,这里使用两者中的任何一个都可以。同样,等级评定也是需要我们根据成绩进行一下条件判断。

分析结束,接下来上代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>渲染表格内容</title><script src="js/vue.js"></script>
</head>
<body><div id="app"><table border="1" cellspacing="0" width="60%"><tr><th>编号</th><th>姓名</th><th>年龄</th><th>性别</th><th>成绩</th><th>等级</th></tr><tr align="center" v-for="(user,index) in users"><td>{{index + 1}}</td><td>{{user.name}}</td><td>{{user.age}}</td><td><span v-if="user.gender ==1">男</span><span v-else>女</span></td><td>{{user.score}}</td><td><span v-show="user.score>= 90">优秀</span><span v-show="user.score>= 60 && user.score< 90">及格</span><span v-show="user.score< 60">不及格</span></td></tr></table></div>
</body>
<script>new Vue({el:"#app",data:{users:[{name:"Tom",age:18,gender:1,score:78},{name:"Rose",age:16,gender:2,score:90},{name:"Jerry",age:16,gender:2,score:59},{name:"Jack",age:18,gender:1,score:90}]} ,methods: {}})
</script>
</html>

总结:虽然从这个案例的代码量上看,似乎使用vue与单纯使用html创建表格几乎没什么区别,我们虽然少写了3行表格的内容,但是v-if,v-for....写了一堆,还需要去专门学习,是不是觉得很亏呢?但是我们的数组中只有4个用户数据,在实际应用中,用户数据量可远远不止这么多,哪怕仅仅以20人的班级为例,录入数据就能录入一天了吧。而使用vue,我们只要改变数组中的内容就可以了,减少了工作量不说,后期更新维护时无论新增还是删减都容易了很多。

相关文章:

  • Elasticsearch:Geoshape query
  • 基于YOLOv8深度学习的水稻叶片病害智能诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战
  • anaconda+pytorch+pycharm安装总结
  • M1芯片MAC 安装MySQL、Nacos遇到的问题
  • VUE开发记录
  • CTFHub:web-LD_PRELOAD-WP
  • 担心信息泄露被恶意申贷,查大数据报告有用吗?
  • linux中的makefile
  • -1- Python环境安装
  • C++模版初阶
  • 如何在 Golang 中使用 crypto/ed25519 进行数字签名和验证
  • 大数据信用报告查询费用一般要多少钱?
  • 幻兽帕鲁能在Mac上运行吗?幻兽帕鲁Palworld新手攻略
  • 【ArcGIS微课1000例】0100:ArcGIS for CAD软件下载与安装(附安装包)
  • 【数据分享】1929-2023年全球站点的逐月降雪深度数据(Shp\Excel\免费获取)
  • 【css3】浏览器内核及其兼容性
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 230. Kth Smallest Element in a BST
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • es6要点
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Mysql数据库的条件查询语句
  • Python打包系统简单入门
  • spark本地环境的搭建到运行第一个spark程序
  • 工程优化暨babel升级小记
  • 回顾 Swift 多平台移植进度 #2
  • 开源SQL-on-Hadoop系统一览
  • 老板让我十分钟上手nx-admin
  • 提醒我喝水chrome插件开发指南
  • 从如何停掉 Promise 链说起
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​学习一下,什么是预包装食品?​
  • (4)logging(日志模块)
  • (搬运以学习)flask 上下文的实现
  • (分布式缓存)Redis哨兵
  • (附源码)ssm高校实验室 毕业设计 800008
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (转)【Hibernate总结系列】使用举例
  • (转)JAVA中的堆栈
  • (转载)Linux 多线程条件变量同步
  • (转载)从 Java 代码到 Java 堆
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net core Swagger 过滤部分Api
  • .NET 材料检测系统崩溃分析
  • .net 微服务 服务保护 自动重试 Polly
  • .Net各种迷惑命名解释
  • .net和php怎么连接,php和apache之间如何连接
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @NestedConfigurationProperty 注解用法
  • @requestBody写与不写的情况
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会