vue 基础知识 一

1 第一个vue案例

  • 导入vue.js
  • 所有的内容必须写在el的模板内,即div内。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>vue的案例</title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
            <p>{{msg}}</p>
		</div>
		<script type="text/javascript">
                new Vue({
					el:"#app",//el模板指定
					data:{//data定义的数据
						msg:"hellow word",
					}
				})
		</script
	</body>
</html>

2 模板语法-文本语法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>vue的案例</title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
            <p>{{msg}}</p>
			<p>{{say}}</p>
			<p>{{1+3}}</p>
			<p>{{'你说:'+msg}}</p>
			<p>{{msg.split('').reverse().join("")}}</p>
			<p>{{msg.length}}</p>
		</div>
		<script type="text/javascript">
                new Vue({
					el:"#app",//el模板指定
					data:{//data定义的数据
						msg:"hellow word",
						say:"吃了吗",
						
					}
				})
		</script>
		<!-- 模板语法  文本 数据绑定最常见的形式就是使用{{}}语法 (双大括号)-->
	</body>
</html>

3 文本指令

  • v-text:只能渲染文本
  • v-html:可以渲染html
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>vue的案例</title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
            <p>{{msg}}</p>
			<p v-text="say"></p>
			<p v-text="msg"></p>
			<p v-html="say"></p>
		</div>
		<script type="text/javascript">
                new Vue({
					el:"#app",//el模板指定
					data:{//data定义的数据
						msg:"hellow word",
						say:"吃了吗 <h1>处理</h1>",
					}
				})
		</script>
		<!-- 模板语法  文本 数据绑定最常见的形式就是使用{{}}语法 (双大括号)-->
	</body>
</html>

4 属性绑定

  • v-bind 属性绑定
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>vue的案例</title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
          <h1 v-bind:title="mytitle">属性绑定</h1>
		  <input type="text" v-bind:value="mytitle" />
		  <!-- v-bind 简写方式-->
		  <h1 :title="mytitle">我爱我的祖国</h1>
		</div>
		<script type="text/javascript">
                new Vue({
					el:"#app",//el模板指定
					data:{//data定义的数据
						mytitle:"我爱我的祖国",
					}
				})
		</script>
		
	</body>
</html>

5 条件语句

  • 通过条件语句的来判断,满足条件才执行语句,不满足不会执行语句
  • 项目的代码只要改age的值就可以了
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>vue的案例</title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
          
		   <p v-if="age>22">你可以成家了</p>
		    <p v-else-if="age>18">你可以当兵,保卫国家了</p>
		   <p v-else>你还是一个小屁孩</p>
		</div>
		<script type="text/javascript">
                new Vue({
					el:"#app",//el模板指定
					data:{//data定义的数据
						age:14,
					}
				})
		</script>
		
	</body>
</html>

  • 通过改isLog的值实现效果
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>vue的案例</title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
          <p v-if="isLog">欢迎回来,<a href="">退出/a></p>
		  <p v-else>你还没有登录 <a href="">登录</a></p>
		  
		</div>
		<script type="text/javascript">
                new Vue({
					el:"#app",//el模板指定
					data:{//data定义的数据
						isLog:true,
					}
				})
		</script>
		
	</body>
</html>

  • v-show
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>vue的案例</title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
         <p v-show="score>90">成绩高于90</p>
		 <p v-show="score<90">成绩低于60</p>
		  
		</div>
		<script type="text/javascript">
                new Vue({
					el:"#app",//el模板指定
					data:{//data定义的数据
						score:82
					}
				})
		</script>
		
	</body>
</html>

  • 注意:v-if 与v-show的区别:
    1. v-if 条件不满足时,直接移除节点
    2. v-show 条件不满足,通过css方式进行隐藏
    3. 如果频繁切换显示与隐藏 建议使用v-show
    4. 如果显示和隐藏切换次数少,建议使用v-if

6 遍历

6.1 数组遍历

  • v-for
  • index 数组的对于下标
  • item 遍历的元素
  • list 被遍历的数组
  • key 的值要求是唯一(便于vue虚拟dom的优化渲染)
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<ul>
				<li v-for="item in list">{{item}}</li>
			</ul>
			<p v-for="(item,index) in list">{{index+1}}---{{item}}</p>
			<p v-for="(item,index) in list" :key="item">
				{{index+1}}-- {{item}}
			</p>
		</div>
		<script type="text/javascript">
			new Vue({
				el:"#app",
				data:{
					list:["vue","react","angular"]
				}
			})
			
			
		</script>
		
		
		
	</body>
</html>

6.2 遍历对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
             <p v-for="item in list" :key="item.name">
				姓名: {{item.name}}<br>
				年龄:{{item.age}}
			 </p>
		</div>
		<script type="text/javascript">
			new Vue({
				el: "#app",
				data: {
					list: [{
							name: "jack",
							age: 18
						},
						{
							name: "tom",
							age: 19
						},
						{
							name: "ck",
							age: 20
						}
					]
				}
			})
		</script>
	</body>
</html>

7 绑定事件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
		 <button type="button" v-on:click="flag=!flag">切换</button>
		  <button type="button" @click="flag=!flag">切换</button>
		  <p v-if="flag">如果没有人敢</p>
		</div>
		<script type="text/javascript">
			new Vue({
				el:"#app",
				data:{
					flag:true
				}
			})
		</script>
	</body>
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			
		<button @click="say('vue')">点击</button>
		</div>
		<script type="text/javascript">
			new Vue({
				el:"#app",
				data:{
					
				},
				methods:{
					say(str){
						alert("你好"+str);
					}
				}
			})
			
			
		</script>
		
		
		
	</body>
</html>

  • event:返回事件对象
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			
		<button @click="say($event,'vue')">点击</button>
		</div>
		<script type="text/javascript">
			new Vue({
				el:"#app",
				data:{
					
				},
				methods:{
					say(e,str){
						console.log(e);
						alert(e.target.innerHTML)
						alert("你好"+str);
					}
				}
			})
			
			
		</script>
		
		
		
	</body>
</html>

  • 事件的修饰符:
    stop:阻止冒泡
    once:只执行一次
    prevent:阻止默认行为
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<div class="parent" @click="phd()">
				<div class="son" @click.stop="shd()">
					stop 阻止事件冒泡
				</div>
				<p @click.once="saylove()"> once 只执行一次</p>
				<a href="https://www.baidu.com" @click.prevent="go()">阻止默认行为</a>
			</div>

		</div>
		<script type="text/javascript">
			new Vue({
				el: "#app",
				data: {

				},
				methods: {
					go(){
						alert("go");
					},
					saylove(){
						alert("i love you");
					},
					phd() {
						alert("parent 被点击了");
					},
					shd() {
						alert("son 被点击了");
					}

				}
			
			})
		</script>



	</body>
</html>

  • v-model:实现双向绑定,同时进行渲染
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<input type="text" v-model="mun" />
			<p>{{mun}}</p>
		</div>
		<script type="text/javascript">
			new Vue({
				el: "#app",
				data: {
					mun:1

				},
				methods: {
					
				}
			
			})
		</script>



	</body>
</html>

  • 单选按钮
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<p>
				<input type="checkbox" v-model="mun" />
				同意条款
			</p>
			<p >
				<button type="button" v-bind:disabled="!mun">提交</button>
			</p>
		</div>
		<script type="text/javascript">
			new Vue({
				el: "#app",
				data: {
					mun:false,
					
				},
				methods: {
		    		
				}
			})
		</script>
	</body>
</html>

  • 多选按钮
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<h3>爱好</h3>
			<label><input type="checkbox" v-model="fav" value="唱歌" />唱歌</label><br>
			<label><input type="checkbox" v-model="fav" value="跳舞" />跳舞</label><br>
			<label><input type="checkbox" v-model="fav" value="武术" />武术</label><br>
			<p>{{fav}}</p>

		</div>
		<script type="text/javascript">
			new Vue({
				el: "#app",
				data: {
					//fav:["唱歌","跳舞","武术"]
					fav: []

				},
				methods: {

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

  • 按键修饰符
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		//keyup  键盘弹起事件
		// enter  代表回车
		//list 数组 unshift 从当前面添加一个元素,添加完毕情况的temp
		//v-model 将当前表单的value 与temp 进行双向绑定
		<div id="app">
			<input 
			 @keyup.enter="list.unshift(temp);temp=''" 
			 type="text" 
			 placeholder="请输入学习内容" 
			 v-model="temp" />
			<p v-for="item in list" :key="item">
				{{item}}
			</p>

		</div>
		<script type="text/javascript">
			new Vue({
				el: "#app",
				data: {
					temp: "",
					list: ["vue", "reack", "webpack", "小程序"]
				},
				methods: {

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

  • 方向键
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		
		<div id="app">
			<!-- 上+1 下-1  左 为负数 右为正 -->
	<input type="text" v-model="num" @keyup.up="num++" @keyup.down="num--" @keyup.left="num=-Math.abs(num)" @keyup.right="num=Math.abs(num)" />

		</div>
		<script type="text/javascript">
			new Vue({
				el: "#app",
				data: {
					num:1
				},
				methods: {

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

猜你喜欢

转载自blog.csdn.net/qq_40994735/article/details/108240538