前端vue框架自学

1、安装编译器HBuilderX

引入vue.js才可以使用vue框架。
vue.js
新建项目
新建html文件
放入vue.js
在这里插入图片描述

出现Vue()函数代表引入成功
或者在控制台看到这个也代表成功
在这里插入图片描述

2、第一个vue应用

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
	<div id="apps">
	  {{ message }} {{name}} {{world}}
	</div>
	
	<script type="text/javascript">
	var app = new Vue({
		el: '#apps',
		data: {
			message: 'Hello Vue!',
			name : "Vue",
			world: "hello world"
		}
	});
	</script>

</body>
</html>

在这里插入图片描述
定义全局变量同时返回应用对象。
应用对象这里包括:element和data

3、vue的数据和方法

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
	{{a}}
</div>

<script type="text/javascript">
var data = { a : 1 };
var vm = new Vue({
	el   : "#app",
	data : data
});

</script>

</body>
</html>

在这里插入图片描述

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
	{{a}}
</div>

<script type="text/javascript">
var data = { a : 1 };
var vm = new Vue({
	el   : "#app",
	data : data
});

vm.$watch('a', function(newVal, oldVal){
	console.log(newVal, oldVal);
})

vm.$data.a = "test...."

</script>

</body>
</html>

第一个data是Vue对象的属性。第二个data是指上面定义的var data变量
使用vm. $data.a可以改变a的值
使用vm. $watch(‘a’,function(newVal,oldVal))
实现监听作用,监听a的值变化后和变化前的变化
在这里插入图片描述

4、vue的生命周期

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
	{{msg}}
</div>
<script type="text/javascript">
var vm = new Vue({
	el : "#app",
	data : {
		msg : "hi vue",
	},
	//在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
	beforeCreate:function(){
		console.log('beforeCreate');
	},
	/* 在实例创建完成后被立即调用。
	在这一步,实例已完成以下的配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。
	然而,挂载阶段还没开始,$el 属性目前不可见。 */
	created	:function(){
		console.log('created');
	},
	//在挂载开始之前被调用:相关的渲染函数首次被调用
	beforeMount : function(){
		console.log('beforeMount');

	},
	//el 被新创建的 vm.$el 替换, 挂在成功	
	mounted : function(){
		console.log('mounted');
	
	},
	//数据更新时调用
	beforeUpdate : function(){
		console.log('beforeUpdate');
			
	},
	//组件 DOM 已经更新, 组件更新完毕 
	updated : function(){
		console.log('updated');
			
	}
});
setTimeout(function(){
	vm.msg = "change ......";
}, 3000);
</script>
</body>
</html>

调用setTimeOut函数修改msg变量前会执行beforeCreate、created、beforeMount、mounted
再执行beforeUpdate、updated生命周期。当然生命周期不止这几个。会与组件相关联

5、模板的使用

5.1、文本插值

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			{{msg}}
		</div>
		<script type="text/javascript">
		var vm = new Vue({
			el : "#app",
			data : {
				msg : "hi vue",
			}
			})
			
			
		</script>
	</body>
</html>

5.2、vi-once(只允许赋值一次)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app" v-once>
			{{msg}}
		</div>
		<script type="text/javascript">
		var vm = new Vue({
			el : "#app",
			data : {
				msg : "hi vue",
			}
			})
			vm.$data.msg = 'aaa';
			
		</script>
	</body>
</html>

在这里插入图片描述
5.3、v-html(允许输出html代码,而不是文本)
###如果不在div标签中指定v-html,则输出的还是文本

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			{{msg}}
			<p>Using mustaches: {{ rawHtml }}</p>
		</div>
		
		<script type="text/javascript">
		var vm = new Vue({
			el : "#app",
			data : {
				msg : "hi vue",
				rawHtml : '<span style="color:red">this is should be red</span>',
			}
			})
			vm.$data.msg = 'aaa';
			
		</script>
	</body>
</html>

在这里插入图片描述
###指定以后则输出html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			{{msg}}
			<p>Using mustaches: {{ rawHtml }}</p>
			<p v-html="rawHtml">Using mustaches: {{ rawHtml }}</p>
		</div>
		
		<script type="text/javascript">
		var vm = new Vue({
			el : "#app",
			data : {
				msg : "hi vue",
				rawHtml : '<span style="color:red">this is should be red</span>',
			}
			})
			vm.$data.msg = 'aaa';
			
		</script>
	</body>
</html>

在这里插入图片描述
5.4、v-bind (属性动态绑定)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			{{msg}}
			<p>Using mustaches: {{ rawHtml }}</p>
			<p v-html="rawHtml">Using mustaches: {{ rawHtml }}</p>
			<div v-bind:class="color">test...</div>
		</div>
		
		<script type="text/javascript">
		var vm = new Vue({
			el : "#app",
			data : {
				msg : "hi vue",
				rawHtml : '<span style="color:red">this is should be red</span>',
				color:'blue'
			}
			})
			vm.$data.msg = 'aaa';
			
		</script>
		
		<style type="text/css">
			.red{color:red;}
			.blue{color:blue; font-size:100px;}
		</style>
	</body>
</html>

在这里插入图片描述

5.5、vue可支持javascript语法
###变量算数运算
###三目表达式运算
###函数式操作

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			{{msg}}
			<p>Using mustaches: {{ rawHtml }}</p>
			<p v-html="rawHtml">Using mustaches: {{ rawHtml }}</p>
			<div v-bind:class="color">test...</div>
			<p>{{number + 2}}</p>
			<p>{{ok == 2? "yes" : "no"}}</p>
			<p>{{ message.split('').reverse().join('') }}</p>
		</div>
		
		<script type="text/javascript">
		var vm = new Vue({
			el : "#app",
			data : {
				msg : "hi vue",
				rawHtml : '<span style="color:red">this is should be red</span>',
				color:'blue',
				number : 10,
				ok : 3,
				message : 'vue'
			}
			})
			vm.$data.msg = 'aaa';
			
		</script>
		
		<style type="text/css">
			.red{color:red;}
			.blue{color:blue; font-size:100px;}
		</style>
	</body>
</html>

6、模板语法:指令

6.1、v-if (条件成立即执行)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
		<div id="app">
			<p v-if="seen">现在你看到我了</p>
			
		</div>
	</head>
	<body>
	
		<script "text/javascript">
			var vm = new Vue({
			el : "#app",
			data : {
				seen : true,
				},
			})
		</script>
		
	</body>
</html>

在这里插入图片描述
6.2、 v-bind:href= (绑定跳转)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
		<div id="app">
			<p v-if="seen">现在你看到我了</p>
			<a v-bind:href="url">...</a>
		</div>
	</head>
	<body>
	
		<script "text/javascript">
			var vm = new Vue({
			el : "#app",
			data : {
				seen : true,
				url : "https://cn.vuejs.org/v2/guide/syntax.html#%E6%8C%87%E4%BB%A4"
				},
			})
		</script>
		
	</body>
</html>

在这里插入图片描述
6.3、@click(点击事件)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
		<div id="app">
			<p v-if="seen">现在你看到我了</p>
			<a v-bind:href="url">...</a>
			<div @click="click1">
				<div @click="click2">
					click me
				</div>
			</div>
		</div>
	</head>
	<body>
	
		<script "text/javascript">
			var vm = new Vue({
			el : "#app",
			data : {
				seen : true,
				url : "https://cn.vuejs.org/v2/guide/syntax.html#%E6%8C%87%E4%BB%A4"
				},
				methods:{
					click1 : function () {
						console.log('click1......');
					},
					click2 : function () {
						console.log('click2......');
					}
				}
			})
			
		</script>
		
	</body>
</html>

###当我们点击click me时
在这里插入图片描述
控制台打印
在这里插入图片描述
###当我们只需要子div执行不需要父级执行时
则@click.stop

	<div @click="click1">
				<div @click.stop="click2">
					click me
				</div>
			</div>

在这里插入图片描述

7、class与style绑定

v-bind 与 class

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
<div v-bind:class="{active : isActive}" style="width:200px;height: 200px;text-align: center;
line-height: 200px;">
	hi vue
	</div>
</div>

<script type="text/javascript">
var vm = new Vue({
	el:"#app",
	data:{
		isActive :true
	}
});
</script>

<style>
.active{background: #FF0000;}
</style>

</body>
</html>



在这里插入图片描述
普通的class绑定
在这里插入图片描述
在这里插入图片描述

对象内绑定多个动态样式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
支持数组类型动态绑定

##style绑定
在这里插入图片描述
在这里插入图片描述
支持三元运算

8、条件渲染

if else

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
	<div v-if="type === 'A'">
	  A
	</div>
	<div v-else-if="type === 'B'">
	  B
	</div>
	<div v-else-if="type === 'C'">
	  C
	</div>
	<div v-else>
	  Not A/B/C
	</div>
	
</div>
<script type="text/javascript">
var vm = new Vue({
	el : "#app",
	data : {
		type : ""
		
	}
});
</script>
<style type="text/css">

</style>
</body>
</html>

在这里插入图片描述
v-show ,页面上展示或隐藏标签
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值