您的位置:首页 > 产品设计 > UI/UE

Vue.js笔记,从入门到精通

2016-10-18 00:00 525 查看
Vue.js笔记,从入门到精通

这是我总结的笔记,对今天的学习总结了一半,笔记后面再补上,因为之前会angular,所以学起来很简单。

Vue.js 是一种mvvm模式,与angular的区别是完全没有controller的概念。

Vue实例

构造器:每个应用都是通过构造函数Vue创建一个根实例,实例化时,需要传入一个选项对象,可以包 含数据、模板、挂载元素、方法、生命周期钩子等。可以扩展Vue构造器,用预定义选项创建可复用的 组件构造器,所有Vue.js组件都是被扩展的Vue实例:
var myComponent = Vue.extend({
//扩展选项
});
//所有的‘myComponent’实例都将以预定义扩展选项被创建
var myComponentInstance = new myComponent();

属性与方法:每个实例都会代理 data 对象里所有的属性,注意只有这些被代理的属性是响应的。如果 在实例创建之后添加新的属性到实例上,它不会触发视图更新。除了这些数据属性,Vue 实例暴露了一 些有用的实例属性与方法。这些属性与方法都有前缀 $,以便与代理的数据属性区分。

实例生命周期:Vue实例在创建时有一系列初始化步骤,在此过程中,将调用一些生命周期钩子,给自 定义逻辑提供运行机会。例如 created 钩子在实例创建后调用,也有其他的钩子,在实例生命周期的不 同阶段调用,compiled、ready、destroyed。钩子的 this 指向调用它的Vue实例,组件的自定义逻辑分 割在这些钩子中。



数据绑定语法
Vue.js的模板是基于DOM实现的,所有的Vue.js模板都是可解析的有效的HTML,通过一些特殊的特性做了增强,Vue模板因而从根本上不同于基于字符串的模板。

插值
文本:数据绑定最基础形式是文本插值,使用“Mustache”语法(双大括号)
<span>{{ msg }}</span>
Mustache 标签会被相应数据对象 msg 属性的值替换,随属性变化而更新。处理单次插值,数据 变化不再更新。
<span>{{ *msg }}</span>

原始的HTML:双Mustache标签将数据解析为纯文本而不是HTML,输出真HTML字符串,需要用 三Mustache标签。
<div>{{{ raw_html }}}</div>
内容以 HTML 字符串插入——数据绑定将被忽略。如果需要复用模板片断,应当使用 partials。
注意在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 XSS 攻击。记住,只对可信内容 使用 HTML 插值,永不用于用户提交的内容。

HTML特性:Mustache标签也可以用在HTML特性内,注意在Vue.js指令和特殊特性内不能用插值。 如果用错Mustache标签Vue.js会给出警告。
<div id="item-{{ id }}"></div>

绑定表达式
放在Mustache标签内的文本称为绑定表达式。在Vue.js中,一段绑定表达式由一个简单的JavaScript表 达式和可选的一个或多个过滤器构成。

JavaScript表达式:目前为止,我们的模板只绑定到简单的属性键。不过实际上Vue.js在数据绑定 内支持全功能的JavaScript表达式。
{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
这些表达式在所属的Vue实例的作用域内计算,每个绑定只能包含单个表达式。

过滤器:Vue.js允许在表达式后添加可选的“过滤器(Filter)”,以“管道符”指示。
{{ message | caplitalize }}
这个过滤器只是一个JavaScript函数,返回大写化的值。Vue.js提供数个内置过滤器,可以开发自 己的过滤器。
管道语法不是JavaScript语法,不能在表达式内使用过滤器,只能添加到表达式的后面。过滤器可 以串联。
{{ message | filter1 | filter2 }}
{{ message | filterA 'arg1' age2 }}

指令
是特殊的带有前缀 v- 的特性。指令的值限定为绑定表达式,因此JavaScript表达式及过滤器规则在这里 也适用。指令职责是当其他表达式的值改变时吧某些特殊的行为应用到DOM上。

<p v-if="greeting">Hello!</p>
这里 v-if 指令根据表达式 greeting 值的真假删除/插入 <p> 元素。

参数:有些指令可以在名称后面带一个“参数”(Argument),中间放一个冒号隔开。例如,v-bind 指令用于响应地更新HTML特性。
<a v-bind:href="url"></a>
这里 href 是参数,它告诉 v-bind 指令将元素的 href 特性跟表达式 url 的值绑定。可能你已注意到 可以用特性插值 href="{{url}}" 获得同样的结果:这样没错,并且实际上在内部特性插值会转为 v- bind 绑定。
v-on 指令,用于监听DOM事件:
<a v-on:click="doSomething"></a>

修饰符:修饰符 (Modifiers) 是以半角句号 . 开始的特殊后缀,用于表示指令应当以特殊方式绑 定。例如 .literal 修饰符告诉指令将它的值解析为一个字面字符串而不是一个表达式。
<a v-bind:href.literal="/a/b/c"></a>
当然,这似乎没有意义,因为我们只需要使用 href="/a/b/c" 而不必使用一个指令。这个例子只是 为了演示语法。

缩写:v- 前缀是一种标识模板中特定的 Vue 特性的视觉暗示。当你需要在一些现有的 HTML 代 码中添加动态行为时,这些前缀可以起到很好的区分效果。但你在使用一些常用指令的时候,你 会感觉一直这么写实在是啰嗦。而且在构建单页应用(SPA )时,Vue.js 会管理所有的模板,此 时 v- 前缀也没那么重要了。因此Vue.js 为两个最常用的指令 v-bind 和 v-on 提供特别的缩写。
v-bind缩写
<!-- 完整语法 -->
<a v-bind:href="url"></a>
<!-- 缩写 -->
<a :href="url"></a>

v-on缩写
<!-- 完整语法 -->
<a v-on:click="doSomething"></a>
<!-- 缩写 -->
<a @click="doSomething"></a>

计算属性

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

计算属性

computed: {

a: function(){

},

b: function(){

}

}

计算属性默认getter,需要时可以提供一个setter。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: