vue.js入门

avatar
作者
猴君
阅读量:0

目录

一. 框架概述

二. vue常用命令

2.1 插值表达式

2.2 v-text

2.3 v-html

2.4 v-on

2.5 v-model 

2.6 v-show

 2.7 v-if

2.8 v-else

2.9 v-bind

2.10 v-for

三. vue生命周期函数

目录

一. 框架概述

二. vue常用命令

2.1 插值表达式

2.2 v-text

2.3 v-html

2.4 v-on

2.5 v-model 

2.6 v-show

 2.7 v-if

2.8 v-else

2.9 v-bind

2.10 v-for

三. vue生命周期函数

四.前端项目结构

五.在HBuilder X中搭建vue-cli项目

1. 安装node.js前端环境

2. HBuilder X创建一个vue-cli项目 

3. vue-cli项目结构

4. 如何运行前端项目

5. 创建组件

 6. 组件路由(页面跳转)

6.1 创建router目录

6.2 使用路由

6.3 在main.js中配置路由

六. 解决npm下载依赖很慢



一. 框架概述

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

二. vue常用命令

2.1 插值表达式 

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

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

<!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,可以解析内容中的标签,会覆盖标签中原本的内容

<!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属性中,也可以传参

<!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 

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

<!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表示隐藏

<!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. :

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

<!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

<!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来将数组/集合中的内容显示到标签上(网页上)

<!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函数

<!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>

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!