Arclin

Advocate Technology. Enjoy Technology.

0%

Vue学习笔记

Vue.js 是一个用于构建用户界面的渐进式前端框架

安装 vue-cli 命令行工具

安装Vue
npm install -g vue-cli

初始化项目

vue init webpack-simple 项目名

项目模板有很多种,这里用了webpack-simple webpack-simple 没有包括Eslint检查功能等等功能,webpack有,但是普通项目用webpack-simple就足够了.

构造Vue实例

1
2
3
var vm = new Vue({
// 选项
})

例子

1
2
3
4
5
6
7
8
9
10
window.onload=function(){
//在这里面写Vue.js代码
new Vue({
el: '#demo', // 需要渲染的DOM元素
data: { // 渲染的数据,key-value方式
message: 'Hello Vue.js!'
}
})
//----------------
}

HTML中数据绑定

单次插值

1
<span>Message: {{ message }}</span>

如果想要单次插值,即今后的数据变化就不会再引起插值更新,加个 *

1
<span>This will never change: {{* message }}</span>

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
JS

var data={message:'Hello Vue.js!'};
new Vue({
el: '#demo',
data: data
})
data.message ="Hello World!";
data.message ="Hello"; // 再次改变时候,第二个元素内的值不会变化

HTML

<span>This will never change: {{ message }}</span><br>
<span>This will never change: {{* message }}</span>

嵌入HTML

三个大括号表示不是插入文本而是html标签

1
2
3
HTML

<div>{{{ msg }}}</div>
1
2
3
4
5
6
7
8
JS

var data={msg:'<p>Hello Vue.js!</p>'};
new Vue({
el: '#demo',
data: data
})

HTMl特性

比如说修改某个元素的id属性

1
2
3
HTML

<div id="{{ id }}"></div>
1
2
3
4
5
6
7
JS

var data={id:'demo'};
new Vue({
el: 'div',
data: data
})

JavaScript表达式

绑定的数据支持JavaScript表达式

1
2
3
4
5
6
7
8
9
10
11
JS

window.onload=function(){
//在这里面写Vue.js代码
var data={message:'Hello ',number:3,ok:true};
new Vue({
el: '#demo',
data: data
})
//----------------
}
1
2
3
4
5
<div id='demo'>
{{ number + 1 }}<br/>
{{ ok ? 'YES' : 'NO' }}<br/>
{{ message.split('').reverse().join('') }}
</div>

输出

1
2
YES
olleH

过滤器

使用管道符 |

将message内的全部转换为小写字母

1
{{ message | lowercase }}

转为小写字母后,首字母大写

1
{{msg | lowercase | capitalize}}

此外还有大写过滤器uppercase

1
2
3
4
5
6
JS
var data={msg:'heLLO!'};
new Vue({
el: '#demo',
data: data
})

输出

1
Hello

指令

渲染数据的时候的逻辑表达式
v-text v-html v-model v-on v-else

1
2
3
4
5
6
7
JS

var data={msg:0};
new Vue({
el: '#demo',
data: data
})

当msg的值为1的时候才打印Hello!

1
2
HTML
<p v-if="msg">Hello!</p>

计算属性

在模板中表达式非常便利,但是它们实际上只用于简单的操作。模板是为了描述视图的结构。在模板中放入太多的逻辑会让模板过重且难以维护。这就是为什么 Vue.js 将绑定表达式限制为一个表达式。如果需要多于一个表达式的逻辑,应当使用计算属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
JS

var vm = new Vue({
el: '#example',
data: {
a: 1
},
computed: {
// 一个计算属性的 getter
b: function () {
// `this` 指向 vm 实例
return this.a + 1
}
}
})
1
2
3
4
5
HTML

<div id="example">
a={{ a }}, b={{ b }}
</div>

输出

1
2
1
a=1, b=2