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 ,页面上展示或隐藏标签