Vue 精华一页纸

Vue.js 和 angular.js一样也是一个客户端框架,利用H5自定义标签的能力,把数据和控制通过js实现分离的功能

冲击比较大的就是 freemarker,jsp这些服务端模板技术,利用客户端框架+Ajax、实现客户端层面的 MVC,MVP,MVMM这些模式。html和js,双向绑定。自此,服务端可以不用再关心页面内容分发这些,只需要提供服务接口,比如Rest

1、典型用法

入门的 vue例子

Vue 精华一页纸_第1张图片

包含元素

I、id 属性标注一个 app 名称 -- 对应的 angular 对象就是ng-app/ng-controller???

II、定义一个 Vue 对象,其中 el属性 对应到 前面的id属性 (背后的逻辑就是 document.getElementById())-- 对应angular 就是 define???

III、Vue 中的数据存储在 data属性中

IV、使用数据对象{{}} -- 这点和angular 是一致性的

V、对于 Vue data中的对象,Vue都直接代理 即 var v = new Vue 后 v.message 可以直接引用

Vue对象中的其他实例方法 v.$watch('obj',function(old,new){}); 监控属性值变化

2、概念

对应每一个模版框架,基础部分都需要了解: 表达式;逻辑控制。掌握了这两部分,就可以切入这个模型,后续高级部分在使用中学习。

更重要的是,几乎所有的模版框架这部分内容都有相似之处,掌握一个就可以掌握大部分的使用

I、表达式

-- js的表达式全部支持

Vue 精华一页纸_第2张图片

II、逻辑控制指令

a、判断逻辑 v-if 指令

Vue 精华一页纸_第3张图片

通过在 属性中 增加 v-if 属性,如果里面的表达式计算结果为真,则该 元素会插入到最后的页面中

b、循环逻辑 v-for 指令

Vue 精华一页纸_第4张图片

采用在属性中 增加 v-for 属性,属性里面迭代语法 item in items 和js的迭代语法类似

3、绑定

绑定是实现MVMM/MVP一个核心因素,通过修改 数据model部分的数据,可以实时联动改变 html中的数据,从而系统实现了控制,无需再专门做Controller的开发,减少了开发成本

I、数据绑定 v-model指令

-- 这点和 angular 的 ng-model 是一样的

绑定的变量 class1,在界面和数据js中双向绑定,一般用在表单元素比较多

II、属性绑定 v-bind指令

Vue 精华一页纸_第5张图片

-- 这个和 angular的 ng-bind 也是一致的,v-bind: 可以缩写成 :

new Vue({

el: '#app',

data:{

class1: false,

class2: true

}

});

一种是简单的绑定表达式的值;

一种是绑定对象和数组(主要针对 class和style 属性)

{class1:true, class2:true} - 这点类似于angular

[class1,class2]

除此之外,还可以使用 computed 返回值,只要返回值是符合如上格式的对象

4、逻辑-事件-控制

v-if/v-for 只是对界面内容的简单控制,web开发有很大一部分是事情相应控制,Vue模版使用什么来代替js的onclick 这些事件处理呢

I、v-on 指令 + Vue 方法

Vue 精华一页纸_第6张图片

v-on 指令对常用的 html事件都可以操作,一般相应的函数都放在 methods中, v-on: 可以缩写成 @

Vue 精华一页纸_第7张图片

v:on 对应js所有的 鼠标和键盘事件

II、其他Vue方法

a、过滤器 |

对应 angular ,可以实现类似 管道的过滤功能,前一个处理结果,作为第一个参数传给后一个过滤器函数,对于过滤器必须使用 filters 来标注函数。

Vue 精华一页纸_第8张图片

b、计算属性 computed

Vue 精华一页纸_第9张图片

和普通methods的区别是,直接使用 名称就可以,而methods需要 () 才能作为方法执行;此外,computed 的记录会缓存,直到依赖的数据发生变化,而methods每次调用都重新执行

5、表单元素

主要通过v-model绑定表单控件的值

比如 复选框

6、组件化

任何框架最终的杀伤力都是能够模块化,组件化,这是非常精华重要的部分,Vue也不例外,下面看Vue如何抽象封装成新的框架和组件

组件化,一般包含几个部分:a、H5界面上,使用的自定义标签和属性;b、js模版中,提供标签和属性的 html模版替换

I、组件化的一个例子

Vue 精华一页纸_第10张图片

    II、组件化的步骤

    一、注册一个组件

    a、全局组件 Vue.component

    b、局部组件 在 new Vue 中 的 components 属性

    new Vue({

    components: {

    'runoob': {template: '<  > 自定义组件 <>''}

    }

    })

    二、使用 template 进行替换 标签元素

    三、父控件(外层) 传递数据给 子控件(内层),通过 props 传递数据

    如果传递的是静态数据比如字符串 直接使用 todo属性,比如 todo="aaa";如果是动态数据,绑定的其他数据使用 v-bind:todo 绑定一个变量

    四、子控件(内层) 传递数据给父控件(外层),通过事件来传递

    使用 $on(eventName) 监听事件

    Vue 精华一页纸_第11张图片
    Vue 精华一页纸_第12张图片
    Vue 精华一页纸_第13张图片

    使用 $emit(eventName) 触发事件

    7、自定义指令

    Vue和AugularJS一样,也有自定义指令,不过功能却不一样,angularJS的自定义指令对应的是Vue的component 组件功能,通过自定义指令这样可以实现更多的组合功能,比如可以在指令中定义自己的事件处理体系

    和组件一样,也有全局和局部指令

    Vue.directive('focus', {});

    directives: {focus:{});

    Vue 精华一页纸_第14张图片

    I、注册一个指令 directive

    II、钩子(回调)函数 bind/inserted/update/componentUpdated/unbind

    函数入参

    el -- 指令绑定的元素

    binding -- 获取绑定的指令的信息

    vnode -- vue编译后的节点

    使用钩子函数用在何时实现指令的功能,如果不指定则所有时候都生效

    III、通过函数获取的 el,bingding 对象实现相应的操作

    8、其他重点知识

    其他常见指令

    v-show 指令

    -- 对比 angular 的ng-show

    Vue 精华一页纸_第15张图片

    实现的效果和 v-if 类似,但背后的逻辑不通,v-if 是控制是否插入该元素,而v-show 是肯定插入该元素,通过 display:none 样式控制显示


    你可能感兴趣的:(Vue 精华一页纸)