=>目的:了解Vue的大致机理、为更好的学习后端
一、Vue简介
二、Vue项目创建
三、Vue学习笔记
3.1、简易的计数器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>HelloVue</title>
</head>
<body>
<div id="app1">
<h2>计数器:{{counter}}</h2>
<!--<button v-on:click="counter++">+</button>-->
<!--<button v-on:click="counter--">-</button>-->
<!--<button v-on:click="add">+</button>-->
<!--<button v-on:click="sub">-</button>-->
<button @click="add">+</button> <!--@为v-on:的简写-->
<button @click="sub">-</button> <!--@为v-on:的简写-->
</div>
<script src="../vue2/vue.js"></script> <!--导入vue源码,类似C语言的#include<stdio.h>-->
<script>
const app = new Vue({ <!--定义一个app对象-->
el:"#app1",
data:{ <!--注意 {counter:0} 是一个对象,即冒号之后放的是一个对象-->
counter:0
},
methods:{
add:function(){
console.log('add被执行'); <!--在浏览器的控制台打印字符串-->
this.counter++;
},
sub:function(){
console.log('sub被执行'); <!--在浏览器的控制台打印字符串-->
this.counter--;
}
}
})
</script>
</body>
</html>
3.2、 MVVM
MVVM:Model-View-ViewModel的简写,
MVVM的框架如图所示:
一、ViewModel通过Data Bindings让obj中的数据实时在DOM中显示。
二、ViewModel通过DOM Listeners来建通DOM事件,并通过methods中的操作,改变obj中的数据。
Vue是典型的MVVM框架,让界面UI与数据相互分离。
3.3、Vue的生命周期
Vue具体的执行过程可以看Vue源码,Vue执行有很多的阶段,其实就是一系列函数的执行过程,每个阶段执行完毕会执行相应的回调函数,用户可以自己定义回调函数,通过回调函数的执行来获取Vue到底执行到哪一步了。
3.4、基础语法
3.4.1、Mustache
Mustache语法就是双大括号的用法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue-Mustache</title>
</head>
<body>
<div id="app1">
<!--双大括号为Mustache语法,双大括号中不仅可以直接写变量,也可以写简单的表达式-->
<h2>{{message}}</h2>
<h2>{{message}},科比</h2>
<h2>{{firstname + lastname}}</h2>
<h2>{{firstname + ' ' + lastname}}</h2>
<h2>{{firstname}} {{lastname}}</h2>
<h2>{{counter*2}}</h2>
</div>
<script src="../vue2/vue.js"></script> <!--导入vue源码,类似C语言的#include<stdio.h>-->
<script>
const app = new Vue({
el:'#app1',
data:{
message:'你好呀',
firstname:'kobi',
lastname:'bryant',
counter:100
}
})
</script>
</body>
</html>
3.4.2、v-once
app对象的成员和DOM的显示是实时的,我们在控制台更改app对象时,DOM会实时显示最新的值,如果想不实时更改,加v-once属性可以让大括号只响应一次,即只在初始更新一次
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue-Mustache</title>
</head>
<body>
<div id="app1">
<h2>{{message}}</h2> <!--实时更新显示-->
<h2 v-once>{{message}}</h2> <!--不实时更新显示-->
</div>
<script src="../vue2/vue.js"></script>
<script>
const app = new Vue({
el:'#app1',
data:{
message:'你好呀',
}
})
</script>
</body>
</html>
3.4.3、v-html
以html的形式展示字符串,例如从服务器接收到'<a href="http://www.baidu.com.com">百度一下</a>',要求解析网址,并以html的形式展示字符串。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue-Mustache</title>
</head>
<body>
<div id="app1">
<h2>{{message}}</h2>
<h2 v-html="url"></h2>
</div>
<script src="../vue2/vue.js"></script>
<script>
const app = new Vue({
el:'#app1',
data:{
message:'你好呀',
url:'<a href="https://www.baidu.com">百度一下</a>'
}
})
</script>
</body>
</html>
3.4.4、v-text
v-text可以文本的形式解析变量并显示,但是一般不使用,因其本身在用法上不太灵活。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue-Mustache</title>
</head>
<body>
<div id="app1">
<h2>{{message}}</h2>
<h2 v-text="message"></h2>
</div>
<script src="../vue2/vue.js"></script>
<script>
const app = new Vue({
el:'#app1',
data:{
message:'你好呀',
}
})
</script>
</body>
</html>
3.4.4、v-pre
Mustache语法或者其他的语法会被Vue解析显示,如果你想让标签不被解析显示,而是原封不动的显示标签的内容,就可以使用v-pre
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue-Mustache</title>
</head>
<body>
<div id="app1">
<h2>{{message}}</h2>
<h2 v-pre>{{message}}</h2>
</div>
<script src="../vue2/vue.js"></script>
<script>
const app = new Vue({
el:'#app1',
data:{
message:'你好呀',
}
})
</script>
</body>
</html>
3.4.5、v-cloak
程序从上往下执行,故先渲染便签,再执行js解析显示,如如程序所示,当执行到js时,被卡了1000ms,以至于渲染后不能被js解析替换,从而出现前1000ms显示{{message}},1000ms之后才解析被解析显示。 解决办法如下:
更新中·。。。。。。。。。。。。。。。