做为一名有追求的前端工程师,咱们无论学习一门语言仍是一个框架,要想把学好绝对不仅是学它的用法,前端
好比 vue 为何它的语法会那么简单,就能实现那么强大的功能?因此咱们在学习的过程当中必定要多学会vue
多问为何,这样才能把一个知识学的更加的透彻。编程
首先我在学vue以前先问你们一些问题,看看你们能不能知道!后端
1.为何要学习vue?设计模式
2.vue是什么?前端工程师
3.vue为何这么火?架构
4.什么是渐进式框架?框架
5.什么是mvvm? 底层是怎么实现的?dom
……mvvm
这些问题是我学习vue以前问本身的问题,接下来就给你们来解释解释。
----------------------------------------------------------------------------------------------------------------
vue究竟是什么?
简单来讲:一个mvvm框架(库)
Vue.js是一款轻量级的以数据驱动的渐进式JavaScript 框架。
----------------------------------------------------------------------------------------------------------------
为何要用vue?
1.组件化开发
2.双向数据绑定
vue的优点:轻量级框架、简单易学、双向数据绑定、组件化、视图、数据和结构的分离、虚拟DOM、运行速度快
vue是单页面应用,使页面局部刷新,不用每次跳转页面都要请求全部数据和dom,这样大大加快了访问速度和提高用户体验。并且他的第三方ui库不少节省开发时间。
----------------------------------------------------------------------------------------------------------------
什么是渐进式框架?
在我看来,渐进式表明的含义是:主张最少。
每一个框架都不可避免会有本身的一些特色,从而会对使用者有必定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影响在业务开发中的使用方式。
好比说,Angular,它两个版本都是强主张的,若是你用它,必须接受如下东西:
- 必须使用它的模块机制- 必须使用它的依赖注入- 必须使用它的特殊形式定义组件(这一点每一个视图框架都有,难以免)
因此Angular是带有比较强的排它性的,若是你的应用不是从头开始,而是要不断考虑是否跟其余东西集成,这些主张会带来一些困扰。
好比React,它也有必定程度的主张,它的主张主要是函数式编程的理念,好比说,你须要知道什么是反作用,什么是纯函数,如何隔离反作用。它的侵入性看似没有Angular那么强,主要由于它是软性侵入。
Vue可能有些方面是不如React,不如Angular,但它是渐进的,没有强主张,你能够在原有大系统的上面,把一两个组件改用它实现,当jQuery用;也能够整个用它全家桶开发,当Angular用;还能够用它的视图,搭配你本身设计的整个下层用。你能够在底层数据逻辑的地方用OO和设计模式的那套理念,也能够函数式,均可以,它只是个轻量视图而已,只作了本身该作的事,没有作不应作的事,仅此而已。
渐进式的含义,个人理解是:没有多作职责以外的事。
----------------------------------------------------------------------------------------------------------------
什么是MVVM?
model:数据和业务逻辑
view:负责界面和显示
viewModel:界面的逻辑和模型的封装
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变能够自动传递给 View,即所谓的数据双向绑定。
Vue.js 就是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专一于View 层。它的核心是 MVVM 中的 VM,也就是 ViewModel。 ViewModel负责链接 View 和 Model,保证视图和数据的一致性。
为了你们理解可以更好理解mvvm,附加几张图,了图就能够更好的理解mvvm的工做原理了。
\
----------------------------------------------------------------------------------------------------------------
Vue.js数据驱动的原理?
Vue.js数据驱动的原理在于View层的视图发生改变时,Vue会经过DOM Listeners来监听并改变Model层的数据。反之,当Model层的数据发生改变时,也会经过Data Bingings来监听并改变View层的展现。从而实现双向数据绑定的功能。
例如:jQuery经过操做DOM来改变页面的显示,而Vue经过操做数据来实现页面的更新与展现。这样咱们就能很直观的理解数据驱动的意思了。
----------------------------------------------------------------------------------------------------------------
为何vue会这么火?
关于这个问题,网上说法不少,我本身认为主要仍是前些年大前端变革太快,而最近一年开始Vue.js+Webpack这个组合开始逐渐稳定下来了,并且已经有了不少中文资料。
对比它的竞争对手AngularJS,新旧版本项目没法平滑升级,变革太大让用户感受不安稳。
而React自己主流推荐用的是JSX,须要额外学习一门语法(什么?学Vue.js还要学ECMAScript6?如今ECMAScript6是趋势,并非由于Vue.js才要学的),而且React自己用的是render写法编写模版代码,这让不少用习惯了Smarty等后端模版引擎得人来使用感受很不适应,如今看来React自己在中国一些论坛社区的火爆程度仍是没有Vue.js高。
固然也并非说除了Vue.js之外其余框架都不好。像知乎新版也是用React开发的,他仍是有各自优秀的地方你们能够深刻学习以后作出本身的判断。