01-Vue简介

Vue.js 是什么


官方解释:Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

Vue.js 可以说是MVVM 架构的最佳实践,是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架。专注于 MVVM 中的 ViewModel,不仅做到了数据双向绑定,而且也是一款相对比较轻量级的JS 库,API 简洁

什么是渐进式框架
有人是这么理解的:
渐进式代表的含义是:主张最少。每个框架都不可避免会有自己的一些特点,从而会对使用者有一定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影响在业务开发中的使用方式。
我个人理解渐进式就是阶梯式向前。
渐进式就是指我们可以由浅入深、由简单到复杂的方式去使用Vue.js。“Progressive(渐进式的)”——这个词在英文中定义是渐进,一步一步,不是说你必须一竿子把所有的东西都用上。就像是搭积木,我们可以根据需求,利用社区良好的生态,借助已有的工具和库搭建我们的项目,用最小、最快的成本一步步搭建。

Vue.js的优点


1. 体积小

压缩后只有33K;

2. 更高的运行效率

基于虚拟DOM, 一种可以预选通过JavaScript进行各种计算, 把最终的DOM操作计算出来并优化的技术,由于中国DOM操作属于预处理操作, 并没有真正地操作DOM, 所以叫虚拟DOM。

3. 双向数据绑定

让开发者不用再去操作DOM对象, 把更多的精力投入到业务逻辑上。

4. 生态丰富、学习成本低

市场上拥有大量成熟、稳重的基于Vue.js的UI框架、常用组件!拿来即用实现快速开发!
对初学者友好、入门容易、学习资料多。

总的来说,Vue.js是一款值得我们去学习去使用的JavaScript框架。

Vue.js 对比 Angular.js 、 React


  • vue.js,更轻量,gzip后只有26k,Angular(56k),react(44k)
    vue.js 更容易上手,学习曲线平稳。Angular难学,颠覆了学习前端的思想,因为之初是由写java的人写的。这点react与Angular比起来稍微好一些,有一套js 语法,但是这些的学习也是一个挑战,而且react学习也会复制一些react全家桶,也是比较难学的。vue是最好学习的。
    vue吸取了两者之长,借鉴了angular的指令和react的组件化。vue还有很多自己的特点,是这两家没有的。

  • Vue可能有些方面是不如React,不如Angular,但它是渐进的,没有强主张,你可以在原有大系统的上面,把一两个组件改用它实现,当jQuery用;也可以整个用它全家桶开发,当Angular用;还可以用它的视图,搭配你自己设计的整个下层用。你可以在底层数据逻辑的地方用OO和设计模式的那套理念,也可以函数式,都可以,它只是个轻量视图而已,只做了自己该做的事,没有做不该做的事,仅此而已。

  • 我们没必要一上来就搞懂Vue的每一个部件和功能,先从核心功能开始学习,逐渐扩展。 同时,在使用中,我们也没有必要把全部件能都拿出来,需要什么用什么就是了,而且也可以把Vue很方便的与其它已有项目或框架相结合。

Vue.js的核心思想


1. 数据驱动


ViewModel中有:DOM Listeners(监听) 和 Directives(指令)
View 对应的 DOM对象。
ViewModel是一个很好的设计,如果没有ViewModel,那么我们在View和Model之间的驱动是由手动触发DOM改变,是一个很繁琐的过程,而且容易出错,如果我们使用了ViewModel之后,就省略了手动操作的步骤了,在Vue.js里面,我们我们只需要改变数据,Vue.js只需通过Directives指令去对DOM做一层封装,当数据发生变化,就会通知指令去修改DOM,数据是DOM的一种自然映射。Vue.js还会对操作做一层监听,当我们修改视图的时候,Vue.js会监听这些变化,从而改变Model。从而实现了双向绑定。

通过数据驱动界面更新, 无需操作DOM来更新界面。使用Vue我们只需要关心如何获取数据, 如何处理数据, 如何编写业务逻辑代码,我们只需要将处理好的数据交给Vue, Vue就会自动将数据渲染到模板中(界面上)。

vue.js是如何做到这一点?
数据响应原理:
数据(model)改变驱动视图(view)自动更新。


2. 组件化

目的:扩展HTML元素,封装可重用代码。
组件化开发,我们可以将网页拆分成一个个独立的组件来编写,将来再通过封装好的组件拼接成一个完整的网页。



左边是我们的页面,被拆分为很多小的区块,每个区块就对应一个组件,组件可以嵌套,最终组合形成一个完整的页面。在vue.js中,每个组件都对应一个ViewModel(右边的小块)。最终我们生产了右边的ViewModel的这个数状结构,与我们左边的DOM树就是一一对应的关系。

组件的设计原则:
页面上每个独立的可视/可交互区域都被视为一个组件。

比如我们的页面的头部,尾部,以及一些可复用的区块,都可以抽象成组件。
每个组件对应一个工程目录,组件所需要的各个组件在这个目录下就近维护。这个就提现了前端的工程化思想,为前端开发提供了很好的分支策略,每个开发者都清楚地知道自己所开发维护的功能单元,代码必然存在于自己的组件目录中,在这个目录中就可以清楚知道自己的功能的内部逻辑以及资源,样式也好,js也好,页面结构也好,都在里面。在Vue.js中,可以通过.vue文件把组件依赖的模板,js,和样式都写在一个文件中,这个就把就近维护思想发挥到极致。

页面不过是组件的容器,组件可以嵌套自由组合形成完整的页面。

MVVM模式


文章开头也提到 ‘Vue.js 可以说是MVVM 架构的最佳实践,是一个JavaScriptMVVM库’ 。那么什么是MVVM呢。
MVVM 由 Model,View,ViewModel 三部分构成:
M: Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑
V: View 代表UI 组件,它负责将数据模型转化成UI 展现出来,也就是指DOM层 或用户界面
VM: ViewModel 是一个同步View 和 Model的对象,用于处理数据和界面的中间层


在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互。Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。

ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。


Vue常用的网站

vue官方文档:https://cn.vuejs.org/v2/guide/
vue资源精选:http://vue.awesometiny.com/
vue GitHub地址:https://github.com/vuejs/vue
基于vue和element构建的后台前端解决方案:https://panjiachen.github.io/vue-element-admin-site/zh/

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

推荐阅读更多精彩内容

  • Vue 简介 概述 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架,发布于 ...
    忞触动心灵阅读 613评论 0 0
  • Vue是一个前端js框架,由尤雨溪开发,是个人项目 Vue近几年来特别的受关注,三年前的时候angularJS霸占...
    6e5e50574d74阅读 550评论 0 0
  • 1.了解vue和react吗?介绍一下。 vue和react都是主流的框架。vue : 脚手架vue-cli、路由...
    Love大猪蹄子嘚MM阅读 378评论 0 0
  • vue中的MVVM模式 即Model-View-ViewModel。 Vue是以数据为驱动的,Vue自身将DOM和...
    w_zhuan阅读 233评论 0 1
  • 讲真,虽然也是第一次画水彩,但是觉得好难啊,尤其是颜色的过度,感觉就像在画彩虹一样,一条一条的……希望老师和小伙伴...
    w小树芽阅读 395评论 2 7