Vue 基础

什么是Vue

就是个js库,一个框架。网页的本质是字符串,div 这些。由浏览器解析成dom树。在vue中dom已被vue管理。其实就是被vue这个库封装了一层。vue负责管理与底层的交互。我们开发通过vue相关语法等开发即可。因此也有了许多特性,例如:数据双向绑定、指令等。

为什么使用vue

vue是一个单页应用,这样用户体验更好,可以单独部署。前后端分离。双向数据绑定。

hello world

<!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">
			{{ message }}
		
		</div>
		

		<script type="text/javascript">
			 let vm = new Vue({
				 el:"#app",
				 data:{
					 message:'hello world'
				 }
			 });
			

		</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">
		
		<!-- 指令 v-if  v-if v-else-if v-else -->
		<div v-if=" flag == 1 ">我是黄老板</div>
		<div v-else-if="flag == 2 ">我是黄老板2</div>
		<div v-else>我是黄老板3</div>
		
		
		<!-- 指令 for -->
		<ul>
			<li v-for="user in users">{{user.name}}</li>
		</ul>
		<!-- 指令 for -->
		<ul>
			<li v-for="(user,index) in users">{{user.name}}  {{index}}</li>
		</ul>
		
		
		<!-- 指令 v-show  show是一个变量-->
		 <div v-show="show">我是v-show</div>
		
		
		<!-- 指令 v-bind 属性绑定  ,将一个值绑定到html属性上 -->
		<button v-bind:disabled="disabledBtn">{{disabledBtn?'不可用':'购买'}}</button>
		
		<!-- 指令 v-bind 缩写 -->
		<button :disabled="disabledBtn">我是按钮2</button>
		
		
		<!-- 指令 v-model 。 双向数据绑定 -->
		<div style="border:1px solid green;margin: 20px;padding:20px;">
			<input v-model="inputData" />
			<p>{{ inputData }}</p>
		</div>
		
		
		<!-- 指令 v-on  点击事件-->
		<button v-on:click="clickFunction()">快点我{{count}}</button>
		
		
		<!-- 指令 v-on  缩写-->
		<button @click="clickFunction()">快点我{{count}}</button>
		
		<div @click="clickFunction2">div内容</div>
		
		
		<!-- 指令 v-html 动态加入html yourHtml是个变量 -->
		<div v-html="yourHtml"></div>
		
		
		<!-- 过滤器 -->
		<div>
			<span> 当前手机价格 ${{ (price/100).toFixed(2)}}</span>
			
			
			<span> 当前手机价格 {{ price | formatCost}}</span>
		</div>
		
		<!-- 计算属性,就是个对象的属性,不过这个属性是临时计算出来的-->
		<div>
			{{ numberTotal }}
		</div>
		
		<!-- 过渡动画 -->
		<div>
			
			<button @click="divVis =!divVis"> 我是按钮</button>
			<transition name="fade">
				<div v-if="divVis">我是内容</div>
			</transition>
		</div>
		
		
		<!-- 自定义指令 -->
		<!-- bind  -->
		<p v-blink>黄总您好~</p>
		
		</div>
		
		
	
		
		
		<script type="text/javascript">
		// Vue.directive 注册全局指令
		Vue.directive('blink',{
			//bind 钩子函数 =>指令绑定到元素调用
			bind(el){
				let vis =true;
				setInterval(() =>{
					vis = !vis;
					el.style.visibility = vis?'visible':'hidden';
				},1000);
			}
		});
			
			let vm = new Vue({
				el: "#app",
				
				data: {
					message:'hello vue',
					numbers:[1,2,3],
					flag:1,
					users:[{name:'黄总'},{name:'黄老板'}],
					show:true,
					disabledBtn:false,
					inputData:'hello vue',
					count:0,
					yourHtml:'<h1> 广东吴颜祖 </h1>',
					price:999999,
					activity:[],
					divVis:true

				}
				,
				/*4个生命周期钩子,其实有8个,其它4个都是beForeXX()*/
	
				created() {
					
				}
				,mounted() {
					
				}
				,updated() {
					
				}
				,destroyed() {
					
				}
				
				,
				//函数存储在methods属性中
				methods: {

					clickFunction(i) {
						console.log("clickFunction");
						this.count =  this.count +1;
					},
					clickFunction2(i) {
						console.log("clickFunction");
						this.count =  this.count +1;
					}
				},
				//计算属性
				computed: {
                 numberTotal(){
					 return this.numbers.reduce((sum,val)=>sum+val);
				 }
				},
				//监听器
				watch:{
					 count(){
						 //this count 有新的变化
						 console.log("count 有新的变化 ")
					 }
				},
				filters:{
					formatCost(value){
						return '$'+ (value/100).toFixed(2);
					}
				}

			});
		</script>

<style>
	
.fade-enter-active .fade-leave-active{
	transition:  opacity .5s; 
}
.fade-enter .fade-leave-to{
	opacity: 0;
}

	
	
</style>

	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值