Vue基础及实现用户的查询列表和更新操作

1、Vue概述
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,方便与第三方库或既有项目整合

2、Vue的快速入门

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>快速入门</title>
		<script src="js/vuejs-2.5.16.js"></script>
	</head>
	<body>
		<div id="app">
			{{message}} <!--Vue插值表达式,把data中定义数据显示到此处-->
		<!--三元运算符-->
		{{false ? "OK":"NO"}}
		<!--数学运算-->
		{{number*3.14}}
		
		<!--插值表达式不支持
		{{var a = 1;}}
		{{if(a=10){}}}-->
		</div>
	</body>
	<script>
		//view model
		//创建Vue对象
		new Vue({
			el:"#app",//由Vue接管id为app区域
			data:{
				message:"Hello Vue!",//注意,此处不用加分号
				number:100
			}
		});
	</script>
</html>

3、Vue的语法
插值表达式

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>插值表达式</title>
		<script src="js/vuejs-2.5.16.js"></script>
	</head>
	<body>
		<div id="app">
			{{message}}
			<!--<input type="button" v-on:click="fun1('Vue v-on')" value="vue的onclick"></input>-->
			<button v-on:click="fun1('Vue v-on')">vue的onclick</button>
		</div>
	</body>
	<script>
		new Vue({
			el:"#app",
			data:{
				message:"Hello Vue"
			},
			methods:{
				fun1:function(msg){
					alert("Hello");
					this.message=msg;
				}
			}
		});
	</script>
</html>

v-on:keydown
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>v-on:keydown</title>
		<script src="js/vuejs-2.5.16.js"></script>
	</head>
	<body>
		<div id="app">
			Vue:<input type="text" v-on:keydown="fun($event)">
			<hr />
			传统js:<input type="text" onkeydown="showKeyCode()" />
		</div>
	</body>
	<script>
		new Vue({
			el:"#app",
			methods:{
				/*
				 * $event 它是vue中事件对象 和我们传统js的event对象是一致的
				 */
				fun:function(){
					var keyCode = event.keyCode;
					if(keyCode<48 || keyCode>57){
					event.preventDefault();
					}
				}
			}
			
		});
		
		//传统js键盘按下事件
		function showKeyCode(){
			//event对象和我们document对象以及window对象一样,可以不用定义直接使用
			var keyCode = event.keyCode;
			if(keyCode<48 || keyCode>57){
				//不让键盘的按键起作用
				event.preventDefault();
			}
//			alert(keyCode); 
//			if(event.keyCode == 13){
//				alert("你按的是回车");
//			}
		};
	</script>
</html>

v-on:onmouseover

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>v-on:onmouseover</title>
		<style>
			#div{
				background-color: red;
				width: 300px;
				height: 200px;
			}
		</style>
		<script src="js/vuejs-2.5.16.js"></script>
	</head>
	<body>
		<div id="app">
			<div v-on:mouseover="fun1" id="div">
				<textarea v-on:mouseover="fun2($event)">这是一个文件域</textarea>
			</div>
			
			<!--传统的js-->
			<!--<div onmouseover="divmouseover()" id="div">
				<textarea onmouseover="textareamouseover()">这是一个文件域</textarea>
			</div>-->
		</div>
	</body>
	<script>
		/*
		 * @事件名称就是 v-on 事件名称的简写
		 */
		new Vue({
			el:"#app",
			methods:{
				fun1:function(){
					alert("鼠标悬停在div上了");
				},
				fun2:function(event){
					alert("鼠标悬停在textarea上了"); 
					event.stopPropagation();
				}  
			}
		});
		
		//传统js方式
		function divmouseover(){
			alert("鼠标移动到div上");
		}
		function textareamouseover(){
			alert("鼠标移动到了textarea上");
			event.stopPropagation();
		}
	</script>
</html>

v-on:事件修饰符

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>v-on:事件修饰符</title>
		<style>
			#div{
				background-color: red;
				width: 300px;
				height: 200px;
			}
		</style>
		<script src="js/vuejs-2.5.16.js"></script>
	</head>
	<body>
		<div id="app">
			<form @submit.prevent action="http://www.baidu.com" method="post">
				<input  type="submit" value="提交"/>
			</form>
			<hr />
			<div @mouseover="fun1" id="div">
				<textarea @mouseover.stop="fun2($event)">这是一个文件域</textarea>
			</div>
			<!--传统js-->
			<!--<form action="http://www.baidu.com/" method="post" onsubmit="checkForm()">
				<input  type="submit" value="提交"/>
			</form>-->
		</div>
	</body>
	<script>
		new Vue({
			el:"#app",
			methods:{
				fun1:function(){
					alert("鼠标悬停在div上了");
				},
				fun2:function(event){
					alert("鼠标悬停在textarea上了"); 
//					event.stopPropagation();
				}  
			}
		});
	
		//传统js方式
		function checkForm(){
			alert(1);
			//表单验证必须有一个明确的boolean类型返回值
			//在引用验证方法时必须加上return方法名称
			return false;
		}
	</script>
</html>

v-on:按键修饰符

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<title>v-on:按键修饰符</title>

		<script src="js/vuejs-2.5.16.js"></script>
	</head>

	<body>
		<div id="app">
			Vue:<input type="text" @keydown.enter="fun1">
			<hr />
			传统js:<input type="text" onkeydown="showKeyCode()">
		</div>
	</body>
	<script>
		//view model
		new Vue({
			el:"#app",
			methods:{
			    fun1:function(){
			        alert("按下的是回车");
				}
			}
		});


	//传统js键盘按下事件
		function showKeyCode(){
//			//event对象和我们document对象以及window对象一样,可以不用定义直接使用
			var keyCode = event.keyCode;
//			if(keyCode<48 || keyCode>57){
//				//不让键盘的按键起作用
//				event.preventDefault();
//			}
//			alert(keyCode); 
			if(event.keyCode == 13){
				alert("你按的是回车");
			}
		}
	</script>

</html>

v-text与v-html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>v-text与v-html</title>
		<script src="js/vuejs-2.5.16.js"></script>
	</head>
	<body>
		<div id="app">
			<div v-text="message"></div>
			<div v-html="message"></div>
			<!--<div id="div1"></div>
			<div id="div2"></div>-->
		</div>
	</body>
	<script>
		new Vue({
			el:"#app",
			data:{
				message:"<h1>Hello Vue</h1>"
			}
		});
		
		//传统js的innerText和innerHtml
		window.onload = function(){
			document.getElementById("div1").innerHTML="<h1>Hello</h1>"
			document.getElementById("div2").innerText="<h1>Hello</h1>"
		}
	</script>
</html>

v-bind的使用

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<title>v-bind的使用</title>
		<script src="js/vuejs-2.5.16.js"></script>
	</head>

	<body>
		<div id="app">
			<font size="5" v-bind:color="ys1">传智播客</font>
			<font size="5" :color="ys2">黑马程序员</font>
		</div>
	</body>
	<script>
		//view model
		/*插值表达式不能用于html标签的属性取值
		例如:<font size="5" color="{{ys1}}">传智播客</font>
		* */
		//要想给html标签的属性设置变量的值,需要使用v-bind
		//v-bind也可以简化写法   直接使用:
		new Vue({
			el:"#app",
			data:{
			    ys1:"red",
				ys2:"green"
			}
		})
	</script>

</html>

v-model

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>v-model</title>
		<script src="js/vuejs-2.5.16.js"></script>
	</head>
	<body>
		<div id="app">
			<form action="" method="post">
				用户名:<input type="text" name="username" v-model="user.username"><br/>
				密码:<input type="text" name="password" v-model="user.password"><br/>
			</form>
		</div>
	</body>
	<script>
		//view model
		new Vue({
			el:"#app",
			data:{
				user:{
				    username:"test",
					password:"1234"
				}
			}
		});
	</script>
</html>

v-for遍历数组

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>v-for遍历数组</title>
		<script src="js/vuejs-2.5.16.js"></script>
	</head>
	<body>
		<div id="app">
			<ul>
				<li v-for="(item,index) in arr ">{{item}}={{index}} </li>
			</ul>
		</div>
	</body>
	<script>
		//view model
		new Vue({
			el:"#app",
			data:{
			    arr:[1,2,3,4,5]
			}
		});
	</script>
</html>

v-for遍历对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>v-for遍历对象</title>
		<script src="js/vuejs-2.5.16.js"></script>
	</head>
	<body>
		<div id="app">
			<ul>
				<li v-for="(key,value) in product ">{{value}}===={{key}} </li>
			</ul>
		</div>
	</body>
	<script>
		//view model
        new Vue({
            el:"#app",
            data:{
               product:{
                   id:1,
				   name:"笔记本电脑",
				   price:5000
			   }
            }
        })
	</script>
</html>

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<title>v-for遍历对象</title>
		<script src="js/vuejs-2.5.16.js"></script>
	</head>

	<body>
		<div id="app">
			<table border="1">
				<tr>
					<td>序号</td>
					<td>编号</td>
					<td>名称</td>
					<td>价格</td>
				</tr>
				<tr v-for="(product,index) in products ">
					<td>{{index}}</td>
					<td>{{product.id}}</td>
					<td>{{product.name}}</td>
					<td>{{product.price}}</td>
				</tr>
			</table>
		</div>
	</body>
	<script>
		//view model
        new Vue({
            el:"#app",
            data:{
                products:[
                	{ id:1,name:"笔记本电脑",price:5000 },
                    { id:2,name:"手机",price:3000 },
                    { id:3,name:"电视",price:4000 }
                ]
            }
        })
	</script>

</html>

v-if与v-show

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>v-if与v-show</title>
		<script src="js/vuejs-2.5.16.js"></script>
	</head>
	<body>
		<div id="app">
			<span v-if="flag">传智播客</span>
			<span v-show="flag">itcast</span>
			<button @click="toggle">切换</button>
		</div>
	</body>
	<script>
		//view model
		new Vue({
			el:"#app",
			data:{
			    flag:false
			},
			methods:{
			    toggle:function(){
			        this.flag = !this.flag;
				}
			}
		})
	</script>
</html>

vuejs生命周期

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<title>vuejs生命周期</title>
		<script src="js/vuejs-2.5.16.js"></script>
	</head>

	<body>
		<div id="app">
			{{message}}
		</div>
	</body>
	<script>
		var vm = new Vue({
			el: "#app",
			data: {
				message: 'hello world'
			},
			beforeCreate: function() {
				console.log(this);
				showData('创建vue实例前', this);
			},
			created: function() {
				showData('创建vue实例后', this);
			},
			beforeMount: function() {
				showData('挂载到dom前', this);
			},
			mounted: function() {
				showData('挂载到dom后', this);
			},
			beforeUpdate: function() {
				showData('数据变化更新前', this);
			},
			updated: function() {
				showData('数据变化更新后', this);
			},
			beforeDestroy: function() {
				vm.test = "3333";
				showData('vue实例销毁前', this);
			},
			destroyed: function() {
				showData('vue实例销毁后', this);
			}
		});

		function realDom() {
			console.log('真实dom结构:' + document.getElementById('app').innerHTML);
		}

		function showData(process, obj) {
			console.log(process);
			console.log('data 数据:' + obj.message)
			console.log('挂载的对象:')
			console.log(obj.$el)
			realDom();
			console.log('------------------')
			console.log('------------------')
		}
		// vm.message = "good...";
		vm.$destroy();
	</script>

</html>

Vue的生命周期:

https://cn.vuejs.org/v2/guide/instance.html#%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E5%9B%BE%E7%A4%BA

案例
实现用户的查询列表和更新操作
前端:Vue
后端:ssm
Github地址:

https://github.com/cxy629/Vue
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值