vue.js入门

目录

[一. 框架概述](#一. 框架概述)

[二. vue常用命令](#二. vue常用命令)

[2.1 插值表达式](#2.1 插值表达式)

[2.2 v-text](#2.2 v-text)

[2.3 v-html](#2.3 v-html)

[2.4 v-on](#2.4 v-on)

[2.5 v-model](#2.5 v-model)

[2.6 v-show](#2.6 v-show)

[2.7 v-if](#2.7 v-if)

[2.8 v-else](#2.8 v-else)

[2.9 v-bind](#2.9 v-bind)

[2.10 v-for](#2.10 v-for)

[三. vue生命周期函数](#三. vue生命周期函数)


一. 框架概述

我们之前写的javaScript代码都是原生的,而框架是在基础语言之上,对其进行了封装,使我们只关心要操作的数据,而不关心如何从对象上得到数据,方便程序员进行开发,提高效率的,我们要介绍的vue.js就是前端的一种框架,它是对javaScript的一种封装

二. vue常用命令

2.1 插值表达式

写法:{{vue中的数据}}

**作用:**可以根据括号里vue中的数据获取到对应的值,只要vue中与它对应的数据发生改变,插值表达式中的值也会发生改变,一般用于设置文本内容,不影响标签中原本的值,但不能解析内容中的html标签

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue.js -->
		<script src="js/v2.6.10/vue.min.js"></script>
	</head>
	<body>
		
		{{message}} 插入一个值,不影响标签中的其他内容
		
		{{message}}不能解析内容中html标签
		-->
		<div id="app">
			<p>{{message}} aaaaa</p>
		</div>
		
		<script>
			/*
			 创建一个vue对象
			 */
			var app = new Vue({
				el: '#app',
				data:{
					message: '<b>Hello Vue!</b>'
				}
			})
		</script>
	</body>
</html>

2.2 v-text

**作用:**设置标签中的文本内容,默认格式会覆盖标签中原本的内容,用插值表达式不会覆盖标签中原本的内容,不能解析内容中的html标签

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue.js -->
		<script src="js/v2.6.10/vue.min.js"></script>
	</head>
	<body>
		<--

		{{message}} 插入一个值,不影响标签中的其他内容
		v-text="message" 会覆盖标签中其他内容
		
		-->
		<div id="app">
			<p>{{message}} aaaaa</p>
			<p v-text="message">aaaaa</p>
		</div>
		
		<script>
			/*
			 创建一个vue对象
			 */
			var app = new Vue({
				el: '#app',
				data:{
					message: '<b>Hello Vue!</b>'
				}
			})
		</script>
	</body>
</html>

2.3 v-html

**作用:**设置元素的innerHTML,可以解析内容中的标签,会覆盖标签中原本的内容

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue.js -->
		<script src="js/v2.6.10/vue.min.js"></script>
	</head>
	<body>
		<!--
		v-html="message"会覆盖标签中其他内容
		
		v-html="message" 可以解析内容中html标签
		-->
		<div id="app">
			<p v-html="message">aaa</p>
		</div>
		
		<script>
			/*
			 创建一个vue对象
			 */
			var app = new Vue({
				el: '#app',
				data:{
					message: '<b>Hello Vue!</b>'
				}
			})
		</script>
	</body>
</html>

三者的区别:

  1. 插值表达式不会覆盖标签中原本的内容,v-text和v-HTML会覆盖标签中原本的内容
  2. v-HTML能解析内容中的标签,插值表达式和v-text不能解析

2.4 v-on

**作用:**为标签绑定事件

有两种写法

  1. 在标签后面写v-on:事件类型="调用的函数"
  2. @事件类型="调用的函数"

调用的函数定义在Vue对象的methods属性中,也可以传参

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!--导入vue.js-->
		<script src="js/v2.6.10/vue.min.js"></script>
	</head>
	<body>
		<div id="app">
			<!--
			v-on:click="函数名" 为标签添加事件
			@click="test2(2)"
			
			-->
			<input type="button" value="按钮1" v-on:click="test1(1)"/>
			<input type="button" value="按钮2" @click="test2(2)"/>
		</div>
		
		<script>
			/*
			 创建一个vue对象
			 */
			var app= new Vue({
				el:'#app',
				data:{
					message: '<b>Hello Vue!</b>',
					name:""
				},
				methods:{//在vue中声明函数
					test1(a){
						this.message = this.message.split("").reverse().join("");
					},
					test2(a){
						this.name = "tom";
					}
				}
			})
		</script>
	</body>
</html>

2.5 v-model

作用: 便捷的设置和获取表单元素的值

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!--导入vue.js-->
		<script src="js/v2.6.10/vue.min.js"></script>
	</head>
	<body>
		<div id="app">
			<!--
			v-model="变量" 把表单元素的value值 绑定到vue对象data中
			-->
			
			<input type="button" value="按钮2" @click="test2(2)"/>

			<input v-model="name"/>

		</div>
		
		<script>
			/*
			 创建一个vue对象
			 */
			var app= new Vue({
				el:'#app',
				data:{
					message: '<b>Hello Vue!</b>',
					name:""
				},
				methods:{//在vue中声明函数
					
					test2(a){
						this.name = "tom";
					}
				}
			})
		</script>
	</body>
</html>

2.6 v-show

**作用:**根据给定值的真假,切换元素的显示状态

**原理:**修改标签对应的display属性,实现显示和隐藏,效率高,v-show后面的值最终都会被解析为布尔值,为true表示显示,false表示隐藏

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 导入vue.js -->
		<script src="js/v2.6.10/vue.min.js"></script>
		
	</head>
	<body>
		<!--
		v-show="布尔值" true-显示 false-隐藏  控制标签display属性 隐藏显示标签的,效率高
		-->
		<div id="app">
			<img v-show="isShow" src="img/3.jpg" />

			<img v-show="age>18" src="img/4.jpg" /></br> <!--age>18为true,显示 age<=18为false 隐藏-->
			
			
			<input type="button" value="切换" v-on:click="oper()">
			
		<script>
			var v = new Vue({
				el: '#app',
				data:{
					isShow:true,
					age:15
				},
				methods:{
					oper(){
						this.isShow=!this.isShow;
						this.age = 19;
					}
				}
			})
		</script>
	</body>
</html>

2.7 v-if

**作用:**根据v-if后面的表达式真假切换元素的显示状态,和v-show作用相同,但有一些差别

**原理:**当表达式为false时,表示隐藏,会直接将该标签删除,为true时又会重新创建该标签,效率比v-show低

注意区分v-show和v-if的区别

2.8 v-else

作用:v-else必须紧跟在v-if的后面,表示当if的条件不成立时,if后面的隐藏了,else后面的显示,当if条件成立,if后面显示,else后面隐藏

2.9 v-bind

**作用:**为元素绑定一个属性,写在v-bind后面的元素的值是一个变量,可以在vue的data中对其进行修改以达到动态改变的目的

**写法:**有两种

  1. v-bind:
  2. :

第二种写法是在元素之前直接加一个冒号即可

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 导入vue.js -->
		<script src="js/v2.6.10/vue.min.js"></script>
		
	</head>
	<body>
		<!--
		需求: 标签的属性值可以 动态修改
		v-bind:属性名="变量名" 一旦为属性添加v-bind 值就是一个在data中定义的变量了
		还可以简写为:属性名
		-->
		
		<div id="app">
			<img v-bind:src="imgurl[index]" :title="array[index]">
			
			<input type="button" @click="oper()" value="操作" />
		</div>
		
		<script>
			var v = new Vue({
				el:"#app",
				data:{
					imgurl:["img/1.jpg","img/2.jpg","img/3.jpg","img/4.jpg","img/5.jpg"],
					array:["苹果手机","华为手机"],
					index:0,
					
				},
				methods:{
					oper(){
						if(this.index!=this.imgurl.length-1){
							this.index++;
						}else{
							this.index=0;
						}
						
					}
				}
			})
		</script>
	</body>
</html>

特殊:给class属性绑定一个bind,可以动态切换class

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 导入vue.js -->
		<script src="js/v2.6.10/vue.min.js"></script>

		<style>
			.active{
				color: red;
			}
		</style>

	</head>
	<body>
		<!--
		需求: 标签的属性值可以 动态修改
		v-bind:属性名="变量名" 一旦为属性添加v-bind 值就是一个在data中定义的变量了
		还可以简写为:属性名
		-->
		
		<div id="app">
			
			<div v-bind:class="{active:isActive}">www</div>

            <input type="button" @click="oper()" value="操作" />
			
		</div>
		
		<script>
			var v = new Vue({
				el:"#app",
				data:{
					
					isActive: true
				},
				methods:{
					
						oper(){

						this.isActive = !this.isActive;
					}
				}
			})
		</script>
	</body>
</html>

2.10 v-for

**作用:**根据数据生成列表结构

数组经常和v-for结合,通常将后端的数据以数组或集合的形式发送到前端,前端可以用v-for来将数组/集合中的内容显示到标签上(网页上)

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/v2.6.10/vue.min.js"></script>
	</head>
	<body>
		<ul id="uid">
			<li v-for="(user,index) in users">
			{{index+1}}
			姓名:{{user.name}}
			年龄:{{user.age}}
			性别:{{user.gender}}
			</li>
			
		</ul>
		
		<script>
			var v = new Vue({
				el:"#uid",
				data:{

					users:[{name:"jim",age:20,gender:"男"},
					      {name:"tom",age:22,gender:"男"},
						  {name:"lili",age:20,gender:"女"}],

				},
			})
		</script>
	</body>
</html>

三. vue生命周期函数

vue对象在生命周期的每个阶段(创建前,创建后,挂载前,挂在后),都为我们提供了会自动执行的钩子函数,我们后端一般关注和标签挂载后,即mounted函数

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/v2.6.10/vue.min.js"></script>
	</head>
	<body>
		<ul id="uid">
			<li v-for="user in users">
			姓名:{{user.name}}
			年龄:{{user.age}}
			性别:{{user.gender}}
			</li>
			
		</ul>
		
		<script>
			var v = new Vue({
				el:"#uid",
				data:{
					
					users:[{name:"jim",age:20,gender:"男"},
					      {name:"tom",age:22,gender:"男"},
						  {name:"lili",age:20,gender:"女"}],
						  
					student:{name:"张三",age:18,gender:"男"}
				},
				methods:{//自定义函数
					
				}, //vue对象生命周期 钩子函数 在生命周期的每个阶段为我们提供了一个函数,可以自动执行
				beforeCreate(){//vue对象创建前
					console.log("beforeCreate");
				},
				created(){//vue对象创建后
					console.log("created");
				},
				beforeMount(){//vue对象挂载前
					console.log("beforeMount");
				},
				mounted(){ //vue对象创建成功 且 与标签绑定后执行 这是我们常用的,在此自动的与后端交互
					console.log("mounted");
				}
			})
		</script>
	</body>
</html>
相关推荐
福兮说2 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
郑州光合科技余经理2 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
专业程序开发源3 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
专业程序开发源3 小时前
springboot社区养老系统44071-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计
小呆呆6663 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
Dovis(誓平步青云)3 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
码艺-Alimjan4 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
可乐鸡翅yeah_4 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒5 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
广州华水科技5 小时前
大坝安全监测解决方案:单北斗GNSS形变监测系统应用与维护
前端