1. 基本概念
Angular 是一个应用设计框架与开发平台,用于创建高效、复杂、精致的单页面应用。
React 是一个用于构建用户界面的 JavaScript 库
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
2. 三者比较
2.1 相同点
1. 都是基于javascript/typescript的前端开发库,为前端开发提供高效、复用性高的开发方式
2. 都有组件和模板的开发思想
3. 各自的组件都有生命周期,不用的组件可以卸载,不占用资源
4. 都支持指令,如样式、事件等的指令
2.2 不同点
1. 创始和发行不同:
Angular是由googl提供支持的,初始发行于 2016年9月;React由Facebook维护,初始发行于 2013年3月;Vue是由前google人员创建,初始发行于2014年2月
2. 应用类型不同:
Angular支持开发native应用程序、SPA单页应用程序、混合应用程序和web应用程序;React支持开发SPA和移动应用程序;Vue支持开发高级SPA,开始支持native应用程序
3. 模型不同
angular基于MVC(模型-视图-控制器)架构;react和vue是基于Virtual DOM(虚拟的文档对象模型)
4. 数据流流向不同
Angular使用的是双向数据绑定,React用的是单数据流的,而Vue则支持两者。
5. 对微应用和微服务的支持不同
Angular使用的是TypeScript,因此它更适合于单页Web应用(single page web application,SPA),而非微服务。相反,React和Vue的灵活性更适合微应用和微服务的开发。
6. 对原生应用的支持不同
React Native为iOS和Android开发原生应用;Angular的NativeScript已被原生应用所采用,特别是Ionic框架已经被广泛地运用在制作混合应用等方面;Vue的Weex平台正在开发之中,尚无下一步使之成为全面跨平台的计划。
7. 框架和库
Angular 是一个框架而不是一个库,因为它提供了关于如何构建应用程序的强有力的约束,并且还提供了更多开箱即用的功能。React 和 Vue 是一种库,可以和各种包搭配。
8. 组件之间传值方式不同
Angular 中直接的父子组件,父组件可以直接访问子组件的 public 属性和方法,也可以借助于@Input 和 @Output 进行通讯。没有直接关系的,借助于 Service 单例进行通讯;React 组件之间通过通过prop或者state来通信,不同组件之间还有Rex状态管理功能;Vue组件之间通信通过props ,以及Vuex状态管理来传值
React、Angular、Vue.js:对比
什么是Vue?
Vue是一套用于构建用户界面的渐进式JavaScript框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,方便与第三方库或既有项目整合。
与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。
Vue特性:
-
模板和渲染函数的弹性选择
-
简单的语法和项目配置
-
更快的渲染速度和更小的体积四
-
生命周期
什么是React?
React是一个用于构建用户界面的JavaScript库,所有React应用程序的核心都是组件。组件是一个自包含的模块,可以呈现一些输出,组件是可组合的。组件可能在其输出中包含一个或多个其他组件。
React的优点:
1、它提供最大的灵活性和响应能力。
2、由于它是基于文档对象模型,所以它允许浏览器友好地以HTML,XHTML或XML格式排列文档。
3、具有丰富的JavaScript库
4、具有很好的灵活的结构和可扩展性
5、React提供了React Native平台,可通过相同的React组件模型为iOS和Android开发本机呈现的应用程序。
React特性:
-
单向绑定,先更新model,然后渲染UI元素,数据在一个方向流动,使得调试更加容易。代码冗余,各种生命周期太麻烦,刚开始接触好难记。
-
用了虚拟DOM。(对虚拟DOM的理解刚开始我不是很理解概念,建议大家去看【深入REACT技术栈】这本书有很好的讲解)
-
更适合大型应用和更好的可测试性
-
Web端和移动端原生APP通吃
-
更大的生态系统,更多的支持和好用的工具
-
组件生命周期
什么是Angular?
Angular是一个是一个用HTML,CSS和JavaScript / TypeScript构建客户端应用程序的开源Web应用程序框架。,由Google的Angular团队以及个人和公司社区领导。
Angular是建造AngularJS的同一个团队的完全重写。为了避免混淆,该团队宣布应该为每个框架使用单独的术语,其中“AngularJS”指的是1.X版本,而“Angular”指的是没有“JS”指的是版本2及更高版本。
Angular的优点
-
Angular提供一个非常干净和维护的方式来创造单页的应用。
-
Angular提供数据绑定功能在HTML中,从而给用户提供丰富和响应的体验
-
Angular代码可进行单元测试。
-
Angular使用依赖注入和利用关注点分离。
-
Angular提供了可重用的组件。
-
使用Angular,开发人员编写更少的代码,并获得更多的功能。
-
在Angular中,视图都是纯HTML页面,并用JavaScript编写控制器做业务处理。
Vue和React和Angular的区别
1、vue.js更轻量,压缩后大小只有20K+, 但React压缩后大小为44k,Angular压缩后大小有56k,所以对于移动端来说,vue.js更适合;
2、vue.js更易上手,学习曲线平稳,而Angular入门较难,概念较多(比如依赖注入),它使用java写的,很多思想沿用了后台的技术;react需学习较多东西,附带react全家桶。
3、vue.js吸收两家之长,借用了angular的指令(比如v-show,v-hide,对应angular的ng-show,ng-hide)和react的组件化(将一个页面抽成一个组件,组件具有完整的生命周期)
4、vue.js还有自己的特点,比如计算属性
vue | React | angular | |
---|---|---|---|
控制器 | 无 | 无 | 有 |
过滤器 | 无 | 无 | 有 |
指令 | 有 | 无 | 有 |
渲染指令 | 有 | 无 | 有 |
数据绑定 | 双向 | 单向 | 双向 |
以上就是Vue和React和Angular的区别是什么?的详细内容,更多请关注html中文网其它相关文章!
一、Vue.js:
其实Vue.js不是一个框架,因为它只聚焦视图层,是一个构建数据驱动的Web界面的库。
Vue.js通过简单的API(应用程序编程接口)提供高效的数据绑定和灵活的组件系统。
Vue.js的特性如下:
1.轻量级的框架
2.双向数据绑定
3.指令
4.插件化
优点: 1. 简单:官方文档很清晰,比 Angular 简单易学。
2. 快速:异步批处理方式更新 DOM。
3. 组合:用解耦的、可复用的组件组合你的应用程序。
4. 紧凑:~18kb min+gzip,且无依赖。
5. 强大:表达式 & 无需声明依赖的可推导属性 (computed properties)。
6. 对模块友好:可以通过 NPM、Bower 或 Duo 安装,不强迫你所有的代码都遵循 Angular 的各种规定,使用场景更加灵活。
缺点: 1. 新生儿:Vue.js是一个新的项目,没有angular那么成熟。
2. 影响度不是很大:google了一下,有关于Vue.js多样性或者说丰富性少于其他一些有名的库。
3. 不支持IE8:
二、angularJS:
angularJS是一款优秀的前端JS框架,已经被用于Google的多款产品当中。
angularJS的特性如下:
1.良好的应用程序结构
2.双向数据绑定
3.指令
4.HTML模板
5.可嵌入、注入和测试
优点: 1. 模板功能强大丰富,自带了极其丰富的angular指令。
2. 是一个比较完善的前端框架,包含服务,模板,数据双向绑定,模块化,路由,过滤器,依赖注入等所有功能;
3. 自定义指令,自定义指令后可以在项目中多次使用。
4. ng模块化比较大胆的引入了Java的一些东西(依赖注入),能够很容易的写出可复用的代码,对于敏捷开发的团队来说非常有帮助。
5. angularjs是互联网巨人谷歌开发,这也意味着他有一个坚实的基础和社区支持。
缺点: 1. angular 入门很容易 但深入后概念很多, 学习中较难理解.
2. 文档例子非常少, 官方的文档基本只写了api, 一个例子都没有, 很多时候具体怎么用都是google来的, 或直接问misko,angular的作者.
3. 对IE6/7 兼容不算特别好, 就是可以用jQuery自己手写代码解决一些.
4. 指令的应用的最佳实践教程少, angular其实很灵活, 如果不看一些作者的使用原则,很容易写出 四不像的代码, 例如js中还是像jQuery的思想有很多dom操作.
5. DI 依赖注入 如果代码压缩需要显示声明.
三、React:
React主要用于构建UI。你可以在React里传递多种类型的参数,如声明代码,帮助你渲染出UI、也可以是静态的HTML DOM元素、也可以传递动态变量、甚至是可交互的应用组件。
React特性如下:
1.声明式设计:React采用声明范式,可以轻松描述应用。
2.高效:React通过对DOM的模拟,最大限度地减少与DOM的交互。
3.灵活:React可以与已知的库或框架很好地配合。
优点: 1. 速度快:在UI渲染过程中,React通过在虚拟DOM中的微操作来实现对实际DOM的局部更新。
2. 跨浏览器兼容:虚拟DOM帮助我们解决了跨浏览器问题,它为我们提供了标准化的API,甚至在IE8中都是没问题的。
3. 模块化:为你程序编写独立的模块化UI组件,这样当某个或某些组件出现问题是,可以方便地进行隔离。
4. 单向数据流:Flux是一个用于在JavaScript应用中创建单向数据层的架构,它随着React视图库的开发而被Facebook概念化。
5. 同构、纯粹的javascript:因为搜索引擎的爬虫程序依赖的是服务端响应而不是JavaScript的执行,预渲染你的应用有助于搜索引擎优化。
6. 兼容性好:比如使用RequireJS来加载和打包,而Browserify和Webpack适用于构建大型应用。它们使得那些艰难的任务不再让人望而生畏。
缺点: 1. React本身只是一个V而已,并不是一个完整的框架,所以如果是大型项目想要一套完整的框架的话,基本都需要加上ReactRouter和Flux才能写大型应用。