Vue 精华一页纸

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

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

1、典型用法

入门的 vue例子

包含元素

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的表达式全部支持

II、逻辑控制指令

a、判断逻辑 v-if 指令

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

b、循环逻辑 v-for 指令

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

3、绑定

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

I、数据绑定 v-model指令

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

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

II、属性绑定 v-bind指令

-- 这个和 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 方法

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

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

II、其他Vue方法

a、过滤器 |

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

b、计算属性 computed

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

5、表单元素

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

比如 复选框

6、组件化

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

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

I、组件化的一个例子

    II、组件化的步骤

    一、注册一个组件

    a、全局组件 Vue.component

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

    new Vue({

    components: {

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

    }

    })

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

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

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

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

    使用 $on(eventName) 监听事件

    使用 $emit(eventName) 触发事件

    7、自定义指令

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

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

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

    directives: {focus:{});

    I、注册一个指令 directive

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

    函数入参

    el -- 指令绑定的元素

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

    vnode -- vue编译后的节点

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

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

    8、其他重点知识

    其他常见指令

    v-show 指令

    -- 对比 angular 的ng-show

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


    最后编辑于
    ©著作权归作者所有,转载或内容合作请联系作者
    • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
      沈念sama阅读 195,783评论 5 462
    • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
      沈念sama阅读 82,360评论 2 373
    • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
      开封第一讲书人阅读 142,942评论 0 325
    • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
      开封第一讲书人阅读 52,507评论 1 267
    • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
      茶点故事阅读 61,324评论 5 358
    • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
      开封第一讲书人阅读 46,299评论 1 273
    • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
      沈念sama阅读 36,685评论 3 386
    • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
      开封第一讲书人阅读 35,358评论 0 254
    • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
      沈念sama阅读 39,652评论 1 293
    • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
      茶点故事阅读 34,704评论 2 312
    • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
      茶点故事阅读 36,465评论 1 326
    • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
      沈念sama阅读 32,318评论 3 313
    • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
      茶点故事阅读 37,711评论 3 299
    • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
      开封第一讲书人阅读 28,991评论 0 19
    • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
      开封第一讲书人阅读 30,265评论 1 251
    • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
      沈念sama阅读 41,661评论 2 342
    • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
      茶点故事阅读 40,864评论 2 335

    推荐阅读更多精彩内容

    • 1.安装 可以简单地在页面引入Vue.js作为独立版本,Vue即被注册为全局变量,可以在页面使用了。 如果希望搭建...
      Awey阅读 10,971评论 4 129
    • 这才知道我的全部努力,不过完成了普通的生活 ——穆旦《冥想》 时间真是太毒了,转眼之间,2016又过去了二分之一,...
      陆曦阅读 2,766评论 0 2
    • 摄自甘肃甘南藏族自治州临潭县 摄自甘肃甘南藏族自治州临潭县 摄自甘肃甘南藏族自治州临潭县 摄自甘肃甘南藏族自治州临...
      阳光草堂记阅读 224评论 0 7
    • 工作汇报这个话题貌似挺简单,但是在职场中很多人的工作汇报都会有个通病,就是凡是汇报必先阐述原因。这可能跟我们的文化...
      低调的沉思阅读 6,960评论 0 2
    • 关于作者 詹姆斯·格雷克,美国最伟大的科普畅销书作家,毕业于哈佛大学。在《纽约时报》担任编辑及采访记者十年,并为《...
      蔚成阅读 1,269评论 0 0