VUE进阶

1 VUE入门案例

1.1 Vue基本用法:

<!-- 基本语法 
			1.导入JS类库.
			2.指定VUE渲染区域 标签体
			3.实例化VUE对象
			4.数据取值
		-->
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>入门案例</title>
	</head>
	<body>
		<!-- 基本语法 
			1.导入JS类库.
			2.指定VUE渲染区域 标签体
			3.实例化VUE对象
			4.数据取值
		-->
		<div id="app">
			<!-- 插值表达式取值 -->
			<h1>{{msg}}</h1>
		</div>
		
		<!-- 1.导入JS类库 -->
		<script src="../js/vue.js"></script>
		<!-- 2.创建VUE对象 -->
		<script>
			/* 关于JS中变量定义说明:
				1.var 没有作用域的概念 容易出现安全性问题. 成员变量
				2.let 作用于var类似, 有作用域的概念  局部变量
				3.const 定义常量
			 */
			const app = new Vue({
				el: "#app",
				data: {
					msg: "vue入门案例 哈哈哈哈"
				}
			})
		</script>
	</body>
</html>

1.2 var/let/const说明

1 var 没有作用域的概念,容易出现安全问题,相当于java中的成员变量

2 let 作用与var类似,有作用域的概念,相当于java中局部类型

3 const 定义变量

1.3 v-text/v-html说明

1 {{msg}} 插值表达式 初加载或者刷新时可能会出现闪现问题:闪现:出现一瞬间的{{msg}}而不是赋的值

2 v-text:当页面没有渲染完成时,不予在页面中展示

3 v-html 将html代码片段 渲染展现

	<div id="app">
			
			<h1>{{msg}}</h1>
			<!-- 1.v-text  -->
			<h1 v-text="msg"></h1>
			<!-- 2.v-html -->
			<div v-html="div"></div>
		</div>
<script src="../js/vue.js"></script>
		<script>
			const app = new Vue({
				el: "#app",
				data: {
					msg: "vue入门案例 哈哈哈哈",
					div: "<h3>我是一个标题标签</h3>"
				}
			})
		</script>

1.4 双向数据绑定

遇到文本框 双向数据绑定.

1.用户的输入变化 则data数据变化.

2.data数据变化, 则文本框的展现变化.

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>入门案例</title>
	</head>
	<body>
		<div id="app">
			用户名: <input type="text" v-model="username"/>
			密码: <input type="text" v-model="password"/>
			<br>
			{{username}}
		</div>
		
		<script src="../js/vue.js"></script>
		<script>
			const app = new Vue({
				el: "#app",
				data: {
					username: '',
					password: ''
				}
			})
		</script>
	</body>
</html>

1.5 MVVM思想:

M: model 数据层

V : 视图层

VM : 视图数据的控制层

DOM:前的整个页面的展现就是一个DOM

虚拟DOM : VUE内部为了提高相应速度,依赖的重要组成组件(操作内存数据,内存数据一旦改变,相对应的页面立即变化)

流程:
1. Model变化, 虚拟DOM操作内存数据变化. 所以页面变化.
2. View变化, 虚拟DOM操作内存数据变化, 数据变化

在这里插入图片描述

 1.6 事件绑定

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>事件绑定</title>
	</head>
	<body>
		<div id="app">
			<!-- 事件绑定的语法:
				v-on:click="简单的计算"
				v-on:click="点击事件"
			 -->
			
			展现数据: {{num}}
			<button v-on:click="num++">自增</button>
			<!-- <button v-on:click="addNum">自增函数</button> -->
			<button @click="addNum">自增函数</button>
			
		</div>
		
		<script src="../js/vue.js"></script>
		<script>
			const app = new Vue({
				el: "#app",
				data: {
					num: 100
				},
				methods: {
					addNum(){
						this.num ++
					}
					/* addNum: function(){
						this.num ++
					} */
				}
			})
		</script>
	</body>
</html>

1.7 分支结构

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>指令学习</title>
	</head>
	<body>
		<div id="app">
			{{msg}}
			<button v-on:click="msg++">加一</button>
			<button @click="add">减一</button>
			<!-- <input type="text" v-model="score" /> -->
			等级:
			<h3 v-if="msg >= 90">优秀</h3>
			<h3 v-else-if="msg >= 80">良好</h3>
			<h3 v-else-if="msg >= 70">普通</h3>
			<h3 v-else>继续努力</h3>
			<!-- 命令 
			1 v-if 如果判断为true 则展现元素
			2 v-else-if  如果不满足v-if 检查是否满足v-else-if
			3 v-else 上述都不满足才展现
			-->
			
		</div>
		
		<!-- 内存变化,view就变化 -->
		<!-- 基本语法
		 1 导入JS类库
		 2 指定VUE渲染区域
		 3 实例化VUE对象
		 4 数据取值
		 -->
		 <!-- 1 导入JS类库-->
		 <script src="../js/vue.js"></script>
		 <!-- 2 创建VUE对象-->
		 <script>
			 /* 1 var 没有作用域的概念,容易出现安全性问题 成员变量
				2 let 作用与var类似,有作用域的概念 局部变量
				3 const 定义常量
			 */
			const app = new Vue({
				 el:"#app",
				 data:{
					msg:"80",
				 },
				methods:{
					 add:function(){
						 this.msg --
					 }
				 }
				 
			 }
			 )
		 </script>
	</body>
</html>

1.8 循环结构

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>循环结构</title>
	</head>
	<body>
		<div id="app">
			<!-- 指令: v-for 展现的标签 -->
			<!-- 案例1: 以循环方式输出爱好 -->
			<div id="demo1">
				<!-- 如果只有一个参数,则value表示数据 -->
				<p v-for="value in hobby" v-text="value"></p>
			</div>
			<hr />
			
			<!-- 案例2: 以循环方式输出爱好 展现下标
				 arg1: value的值的数据
				 arg2: 下标的数据.
			 -->
			<div id="demo2">
				<p v-for="arg1,arg2 in hobby">
					<span v-text="arg2+1"></span>
					----
					<span v-text="arg1"></span>
				</p>
			</div>
			<hr />
			
			<div id="demo3">
				<table border="1px" width="90%">
					<tr align="center">
						<td>编号</td>
						<td>名称</td>
						<td>年龄</td>
					</tr>
					<!-- 遍历数据获取对象,之后从对象中获取属性 -->
					<tr align="center" v-for="user in userList">
						<td v-text="user.id"></td>
						<td v-text="user.name"></td>
						<td v-text="user.age"></td>
					</tr>
				</table>
			</div>
			<hr />
			
		</div>
		
		<script src="../js/vue.js"></script>
		<script>
			const app = new Vue({
				el: "#app",
				data: {
					hobby: ["敲代码","改BUG","钻研技术"],
					userList: [{id:100,name:"泰森",age:60},
							   {id:101,name:"嘴炮",age:40},
							   {id:102,name:"泰坦巨猿",age:300000},
							  ]
				},
				methods: {
				}
			})
		</script>
	</body>
</html>

1.9 MVC 设计思想

在这里插入图片描述

前端:视图:用户看到的页面(html)

后端:SpringBoot,Spring,Mybatis 等

M : 为持久层与数据库

V : 前端视图:用户看到的数据

C : 控制程序的流转 Contruller层 与Service层

1.10 表单的双向数据绑定

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>循环结构</title>
	</head>
	<body>
		<div id="app">
		<!-- 表单中的那些标签可以使用双向数据绑定
			 双向数据绑定:用户可以录入的标签
			 1 input:单选,双选,下拉,文本域等等
			 
		 -->
		 
		 <form action="http//baidu.com">
			 <div >
				 <!-- 懒加载 输入后 离焦在进行数据的双向绑定-->
				 用户名:<input type="text" v-model.lazy="username"  />
				 {{username}}
			 </div>
			 <div>
			 	性别:<input type="radio" value="男" name="aa" v-model="age" />男
					 <input type="radio" value="女" name="aa" v-model="age"/>女
			 </div>
			 
			 <div >
				 <!-- 多个用数组接取-->
				 <input type="checkbox" name = "bb" value="敲代码" v-model="hobby"/>敲代码
				  <input type="checkbox" name = "bb" value="打游戏" v-model="hobby"/>打游戏
				 <input type="checkbox" name = "bb" value="叽叽叽" v-model="hobby"/>叽叽叽
			 </div>
			 <!-- Vue 的点击事件中有一个方法,可以取消标签的默认行为
				   @click.prevent
				   常用场景:
				   1 form标签  阻止action 跳转
				   2 a标签     阻止herf跳转
			 -->
			 <input type="submit" value="提交" @click.prevent="formBtn" />
		 </form>
		 <a href="www.hao123" @click.prevent>点击</a>//可以拦截
		 
		 
		 
		 
		 
		 
		 
		</div>
		 <a href="www.hao123" @click.prevent>点击</a>//不可以拦截

		
		<script src="../js/vue.js"></script>
		<script>
			const app = new Vue({
				el: "#app",
				data: {
					username:"",
					age:"男",
					hobby:["叽叽叽"],
					
					
					
				},
				methods: {
					formBtn(){
						alert("ajks");
					}
				}
			})
		</script>
	</body>
</html>

懒加载 :  v-model.lazy 当离焦后(输入完成,回车) 才开始数据绑定

转化类型 :v-model.number   将input输入的为字符串转化为数字

去除前后多余的空格(中间的不行) : v-model.trim

拦截form,a标签跳转: @click.prevent

<input type="submit" value="提交" @click.prevent="formBtn" />

 <a href="www.hao123" @click.prevent>点击</a>//可以拦截

注意:所有标签都需要写道挂载点内,否则所有标签不生效

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>循环结构</title>
	</head>
	<body>
		<div id="app">
		
		 <a href="www.hao123" @click.prevent>点击</a>//可以拦截
		 
		</div>
		 <a href="www.hao123" @click.prevent>点击</a>//不可以拦截

		
		<script src="../js/vue.js"></script>
		<script>
			const app = new Vue({
				el: "#app",
			})
		</script>
	</body>
</html>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值