java三阶段学习_day05

1.Vue js

1.1 vue 是什么

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

如果你想在深入学习 Vue 之前对它有更多了解,我们制作了一个视频,带您了解其核心概念和一个示例工程。

1.2 vue组件说明

java三阶段学习_day05

1.3 vue入门案例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>VUE入门案例</title>
	</head>
	<body>
		<!-- 入门案例步骤:
					1.导入vue.js文件  html下部编辑
					2.指定区域进行渲染  需要准备div  里面写vue.js代码
					3.创建vue.js对象  指定渲染区域  动态调用
		-->
		
		
		
		<!-- 指定区域 -->
		<div id="app">
			<!-- 展现msg属性
			 插值表达式:{{key}}
			 -->
			<h1>{{msg}}</h1>
</div>
		
		<!-- 导入js文件 -->
		<script src="../js/vue.js"></script>
		
		<!-- 创建vue对象 -->
		<script>
			/**
			 * 语法:
			 * 		1.const 定义常量
			 * 		2.let   作用与var类似,有作用域概念
			 * 		3.var   特点:没有作用域
			 */
			const app=new Vue({
				el: "#app",
				data: {
					msg: "你好vue"
				}
			})
		</script>
	</body>
</html>

1.4数据显示

!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>VUE入门案例</title>
	</head>
	<body>

		<div id="app">
			<!-- 特点: 如果页面没有渲染完成,则直接展现给用户
					插值表达式需要直接显示
					显示时使用,输入不可使用-->
			<h1>{{msg}}</h1>
			
			<!-- v-text 如果页面没有渲染完成,则不显示信息-->
			<h1 v-text="msg"></h1>
			
			<!-- v-html 直接渲染html标签 -->
			<div v-text="h3html"></div>
			<div v-html="h3html"></div>
			
			<!-- v-pre 跳过预编译 -->
			<div v-pre>{{msg}}</div>
			
			<!-- v-once 只渲染一次 -->
			<div v-once>{{once}}</div>
		</div>

		<script src="../js/vue.js"></script>

		<script>

			const app=new Vue({
				el: "#app",
				data: {
					msg: "你好vue",
					h3html: "<h3>需要html渲染</h3>",
					once: "我只能被渲染一次"
				}
			})
		</script>
	</body>
</html>

1.5 双向数据绑定

1.5.1 双向数据绑定代码

双向数据绑定: 实现了页面与数据的绑定. 页面变数据变 / 数据变页面变.

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>VUE入门案例</title>
	</head>
	<body>

		<div id="app">
		<!-- v-model 双向数据绑定 
				数据段--页面
				页面----数据 
				-->
				{{msg}}
		<input name="msg" v-model="msg" />
		
		</div>

		<script src="../js/vue.js"></script>

		<script>

			const app=new Vue({
				el: "#app",
				data: {
					msg: "数据随时修改",

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

1.5.2 MVVM设计思想

回顾: mvc模式,核心思想:减少代码的耦合性
m model:封装的数据
v view :视图层: 数据的展现
c contro 控制层: 程序的流转过程
衍生: 3层代码的结构 controller–service–mapper/dao
MVVM思想:
M: model 封装的数据
V: view 数据的展现 视图层
VM: 数据视图的控制层 控制数据流转的过程
MVVM是前端为了解耦,模拟后端设计的一种思想

1.5.3 双向数据绑定的原理

步骤:

  1. 用户修改页面是,通过DOM监听器感知用户的修改行为,通过虚拟DOM,第一时间更新Model中的数据.
  2. 当数据发生变化时,由虚拟DOM根据数据绑定的规则,第一时间通知真实的DOM,页面发生变化.

java三阶段学习_day05

1.6 事件绑定

语法:

	v-on:click="函数/直接进行计算"

具体代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>双向数据绑定</title>
	</head>
	<body>
		<div id="app">
			<!-- 双向数据绑定 v-model
				1.数据端---页面
				2.页面-----数据
			   -->
			<input name="msg" v-model="msg"/><br>
			{{msg}}
			
		</div>
		<!-- 1.导入JS文件 -->
		<script src="../js/vue.js"></script>
		
		<!-- 3.创建VUE对象 -->
		<script>
			const APP = new Vue({
				el: "#app",
				data: {
					msg: "数据随时修改"
				}
			})
		</script>	
	</body>
</html>

1.7 按键触发机制

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>按键触发操作</title>
	</head>
	<body>
		<div id="app">
			<!-- 
				 语法:	
					1.v-on:keydown="" 按下触发
					2.v-on:keyup=""   弹起来触发
					3.v-on:keypress="" 小键盘触发
				 按键支持:
					.enter  .tab
					.delete (捕获“删除”和“退格”键)
					.esc   .space
					.up .down .left .right
				 
				 需求:用户通过输入 按特殊的键位触发函数 
				 要求1. 按钮实现加法操作 num = num + num2
				 要求2. 用户按回车按钮实现触发 
				 要求3. 用户按空格键实现触发 
			-->
			<h3>用户数据:{{num}}</h3><br>
			<!-- <input type="text" v-on:keyup.enter="addNum" v-model="num2" /> -->
			<input type="text" v-on:keyup.space="addNum" v-model="num2" />
			<button @click="addNum">计算</button>
			
			
		</div>
		<script src="../js/vue.js"></script>
		
		<script>
			const APP = new Vue({
				el: "#app",
				data: {
					num: 100,
					num2: 0
				},
				methods: {
					addNum(){
						//this.num = this.num + this.num2
						//将字符串转化为数值类型
						this.num +=   parseInt(this.num2) 
					}
				}
			})
		</script>	
	</body>
</html>

1.8 计算器练习

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>计算器案例</title>
	</head>
	<body>
		
		<div id="app">
			<!-- 要求
				1.准备两个文本输入框 num1/num2
				2.要求准备一个按钮 "计算" 当点击按钮时实现
				  count=num1+num2
				  将得到的结果通过 总数输出count
				3.当输入num2时可以通过回车按键 计算.
				注意事项: input框默认是字符串
			 -->
			 
			 数值1: <input type="text" v-model="num1" /><br>
			 数值2: <input type="text" v-model="num2" 
				@keyup.enter="addNum"
			 /><br>
			 总数:  {{count}} <br>
			 <button @click="addNum">计算</button>
			
		</div>
		<script src="../js/vue.js"></script>
		
		<script>
			const APP = new Vue({
				el: "#app",
				data: {
					num1: 0,
					num2: 0,
					count: 0
				},
				methods: {
					addNum(){
						this.count = 
							parseInt(this.num1) +  parseInt(this.num2)
					}
				}
			})
		</script>	
	</body>
</html>


1.9 按键修饰符

1.9.1 阻止冒泡 .stop

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>按键修饰符</title>
	</head>
	<body>
		
		<div id="app">
			<!-- 难点: 元素可能需要嵌套,事件可能嵌套
				 说明: 如果事件嵌套则必然带来事件的冒泡.
				 解决方案: 阻止事件冒泡  .stop属性
			 -->
			数值: {{num}}
			<div @click="num++">
				嵌套结构
				<button @click.stop="num++">计算</button>
			</div>
		<script src="../js/vue.js"></script>
		
		<script>
			const APP = new Vue({
				el: "#app",
				data: {
					num: 0
				},
				methods: {
					
				}
			})
		</script>	
	</body>
</html>

1.9.2 阻止默认行为 .prevent

			<!-- 需求2:
				 a标签作用中的href的跳转是默认规则
				 要求: 用户点击a标签 不跳转页面,同时触发事件
				 解决: 阻止标签的默认行为  @click.prevent	
			 -->
			<a href="http://baidu.com" @click.prevent="aClick">百度</a>
			
			<!-- 用途: prevent阻止页面跳转  a标签/form表单 action同步请求 -->

上一篇:day05(面向对象基础)


下一篇:从零开始学架构-day05