1. 程式人生 > 其它 >前端4:vue使用、v-cloak、v-text、v-html、v-show、v-if、v-model、v-bind

前端4:vue使用、v-cloak、v-text、v-html、v-show、v-if、v-model、v-bind

技術標籤:java學習筆記java

1)vue提供大量命令,v-開頭
vue通過給html標籤增加屬性來實現
區分屬性是html的屬性,還是vue的屬性在於它是否增加字首v-

2)vue.js程式碼
https://cdn.jsdelivr.net/npm/vue/dist/vue.js

3)資料驅動
a. 寫框架結構
建立Vue物件,設定資料
body中定義div id=“app”
通過el進行掛載
插值表示式,所有Html標籤增加v-屬性
b. data中定義資料
3種
data:{ //物件格式,最常用的
msg: “我愛天安門”
}
{物件},物件中kv結構,通過k就可以訪問value

data: function(){		//函式格式
  return {
    msg: "我愛天安門3"
  }
}

//es6 標準函式格式
data(){		//data既是咱們變數,也是函式名稱
  return {
    msg: "我愛天安門4"
  }
}

4)可以自定義方法

new Vue({
el: “#app”,
data:{
msg: “vue 真棒”
},
methods:{ //定義多個方法
//宣告方法
show: function(){
console.log(“沒有驚喜有驚嚇”)
}
}
})

5)命令:
v-bind:href=“url”,url就取在data中的定義
:href=“url”,簡寫
v-bind,讓頁面資料和標籤區分

v-model 命令,雙向繫結
1)js只能操作標籤,修改標籤的值,
2)vue可以失效雙向的變化
頁面的值變化,資料變化
資料變化,頁面也改變
實現某個改變,其他的引用自動重新整理,保證資料一致性,比較方便

v-show == v-if
v-show 內容就在頁面上,通過樣式控制是否展示
v-if 如果false,內容不在頁面上
v-show和v-if區別:
v-show本質是if判斷,但是內容都在頁面展示,內容是在html頁面中
v-if它是vue進行解析,解析過程中判斷不成立,就刪除,元素是不存在
業務角度:業務場景
1)頁面值頻繁進行切換,v-show,樣式修飾效能更高
2)頁面值通常都是一個結果,v-if

v-text和v-html
v-text 純文字
v-html 可以解析html標籤

6)
使用Vue步驟
1、引入vue.js
2、在body中div id=“app”
3、

}
})

4、插值表示式 {{msg}}
注意:插值表示式有個問題:會有短暫閃爍,頁面先解析{{msg}},然後vue才開始解析
vue提供解決方案:v-cloak 命令,利用css,可以讓標籤不顯示

springmvc和前端互動,請求和響應
spring 業務邏輯處理
mybatis 和資料庫互動

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.js"></script>
	</head>
	<body>
		<div id="app">
			{{msg}}
		</div>
	</body>
	<script>
		//建立Vue物件,給這個物件設定引數el、data,準備資料、
		
		// var data = {
		// 	msg : "我愛地安門",
		// 	info: "要帶口罩"
		// }
		// var para = {
		// 	el: "#app",		//掛載 element
		// 	data : data		//資料,物件
		// }
		// var vm = new Vue(para)
		
		//都是匿名函式寫法,安全
		new Vue({
			el: "#app",
			// data: function(){		//函式格式
			// 	return {
			// 		msg: "我愛天安門3"
			// 	}
			// }
			// //es6 標準函式格式
			// data(){		//data既是咱們變數,也是函式名稱
			// 	return {
			// 		msg: "我愛天安門4"
			// 	}
			// }
			data:{		//物件格式,最常用的
				msg: "我愛天安門"
			}
		})
	</script>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<h1>資料:變數、陣列、物件、陣列物件</h1>
			<p>變數:{{name}}、{{age}}、{{sex}}</p>
			<hr>
			<p>陣列:{{hobby}}</p>
			<p>陣列第一個元素:{{hobby[0]}}</p>
			<p>陣列最後一個元素:{{hobby[hobby.length-1]}}</p>
			<p>
				遍歷陣列的每個元素:(每次從集合中拿出一個元素,當前行代表o)<br>
				<div v-for="o in hobby">{{o}}</div>
				<div v-for="(o,i) in hobby">{{i}}-{{o}}</div>
			</p>
			
			<hr>
			<p>物件:{{girlFriend}}</p>
			<p>物件屬性:{{girlFriend.name}}、{{girlFriend.age}}</p>
			
			<hr>
			<p>陣列物件:{{cars}}</p>
			<p>陣列物件第一條記錄:{{cars[0]}}</p>
			<p>陣列物件第一條記錄:{{cars[0].name}},{{cars[0].color}}</p>
			<p>陣列物件遍歷:<br>
				<div v-for="(o,i) in cars">{{o.name}}-{{o.color}}</div>
			</p>
		</div>
	</body>
	<script>
		new Vue({
			el: "#app",
			data: {
				name: "王強",
				age: 18,
				sex: true,
				hobby: ["乒乓球","爬山","音樂","書法"],
				girlFriend: {
					name: "王銀",
					age: 15
				},
				cars: [
					{name:"保時捷707", color:"red"},
					{name:"勞斯萊斯", color:"white"},
					{name:"jeep", color:"green"}
				] 
			}
		})
	</script>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.js"></script>
	</head>
	<body>
		<div id="app">
			{{msg}}
			{{show()}}
			<button v-on:click="show()">點我有驚喜</button>
			<button @click="show()">點我有驚喜2</button>
		</div>
	</body>
	<script>
		new Vue({
			el: "#app",
			data:{
				msg: "vue 真棒"
			},
			methods:{	//定義多個方法
				//宣告方法
				show: function(){
					console.log("沒有驚喜有驚嚇")
				}
			}
		})
	</script>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.js"></script>
		<style>
			[v-cloak]{				//選擇器,頁面上的vue控制元素就都被先隱藏,當vue渲染完成,在開啟
				display: none;  	//把頁面標籤隱藏
			}
		</style>
	</head>
	<body>
		<div id="app" v-cloak>
			<h1>資料:變數、陣列、物件、陣列物件</h1>
			<p>變數:{{name}}、{{age}}、{{sex}}</p>
			<hr>
			<p>陣列:{{hobby}}</p>
			<p>陣列第一個元素:{{hobby[0]}}</p>
			<p>陣列最後一個元素:{{hobby[hobby.length-1]}}</p>
			<p>
				遍歷陣列的每個元素:(每次從集合中拿出一個元素,當前行代表o)<br>
				<div v-for="o in hobby">{{o}}</div>
				<div v-for="(o,i) in hobby">{{i}}-{{o}}</div>
			</p>
			
			<hr>
			<p>物件:{{girlFriend}}</p>
			<p>物件屬性:{{girlFriend.name}}、{{girlFriend.age}}</p>
			
			<hr>
			<p>陣列物件:{{cars}}</p>
			<p>陣列物件第一條記錄:{{cars[0]}}</p>
			<p>陣列物件第一條記錄:{{cars[0].name}},{{cars[0].color}}</p>
			<p>陣列物件遍歷:<br>
				<div v-for="(o,i) in cars">{{o.name}}-{{o.color}}</div>
			</p>
		</div>
	</body>
	<script>
		new Vue({
			el: "#app",
			data: {
				name: "王強",
				age: 18,
				sex: true,
				hobby: ["乒乓球","爬山","音樂","書法"],
				girlFriend: {
					name: "王銀",
					age: 15
				},
				cars: [
					{name:"保時捷707", color:"red"},
					{name:"勞斯萊斯", color:"white"},
					{name:"jeep", color:"green"}
				] 
			}
		})
	</script>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<a href="http://www.pinduoduo.com">拼多多</a>
			
			<a href="{{url}}">{{urlname}}1</a>
			<a v-bind:href="url">{{urlname}}2</a>
			<a :href="url">{{urlname}}3</a>
		</div>
	</body>
	<script>
		new Vue({
			el: "#app",
			data:{
				url: "http://www.jd.com",
				urlname: "京東"
			}
		})
	</script>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.js"></script>
	</head>
	<body>
		<div id="app">
			{{info}}<br>
			{{info}}<br>
			{{info}}<br>
			{{info}}<br>
			{{info}}<br>
			{{info}}<br>
			<hr>
			<input type="text" id="info" v-model="info"/>
		</div>
	</body>
	<script>
		var vm = new Vue({
			el: "#app",
			data:{
				info: "北京歡迎您"
			}
		})
	</script>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.js"></script>
	</head>
	<body>
		<div id="app">
			{{msg}}
			<p v-show="isshow">是否展示</p>
			<p v-if="isshow">是否展示</p>
		</div>
	</body>
	<script>
		new Vue({
			el: "#app",
			data: {
				msg: "hello vue.",
				isshow: false
			}
		})
	</script>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.js"></script>
	</head>
	<body>
		<div id="app">
			{{msg}}
			<div v-text="msg"></div>
			<div v-html="msg"></div>
		</div>
	</body>
	<script>
		new Vue({
			el: "#app",
			data: {
				msg: "<font color='red'>hello vue.</font>"
			}
		})
	</script>
</html>