框架概览
框架 | AngularJS | ReactJS | EmberJS |
概述 | 主要的 JavaScript MVW 框架 | 主要用于构建用户界面,但不仅限于此的 JavaScript 库 | 一个用于创建复杂 Web 应用程序的框架 |
创立 | 2009 由 Miško Hevery 创立 | 2013 年由 Jordan Walke 创立,开源 | 2007 年由 Yehuda Katz 创立,名为 SproutCore,2011 年被 Facebook 收购,更名为 EmberJS |
主页 | https://angularjs.org/ | https://reactjs.net/ | http://emberjs.com/ |
Github | https://github.com/angular/angular.js | https://github.com/facebook/react | https://github.com/emberjs/ember.js |
错误报告 | https://github.com/angular/angular.js/issues | https://github.com/facebook/react/issues | |
授权 | MIT | MIT | BSD-3-Clause |
使用该技术的知名网站 | Youtube, Vevo, Freelancer, Istockphoto, Weather, Sky Store | Facebook, Instagram, Khan Academy, New York Times, Airbnb, Flipkart, Sony Lifelog | Apple Music, Yahoo!, LinkedIn, TinderBox, Netflix, Groupon |
理想用途 | 建立调试活跃和互动的 Web 应用程序 | 数据变化频繁的大型 Web 应用程序 | 动态 SPA(Scratch Pad Area,暂存区) |
优点:
自定义文档对象模型(DOM)元素的创建。
明确的UI设计与替换。
当在一个HTML文档创建输入属性时,会为每个渲染属性创建一个独立的数据绑定。在发生变化需要重渲染之前,Angula先检测r页面的每一个明确属性。
依赖注解。
简单路径。
代码容易测试。
框架支持HTML语法的扩展,直接创建可复用的组件。
稳健的模板生成方案。在HTML属性使用绑定表达式来驱动模板功能。Angular的模板引擎拥有一个深度理解的DOM,它的优越结构模板减少了创建生成页面所需的代码量。
数据模型对于小规模数据的使用有所限制,其目的为了使得代码简单容易测试。
快速渲染静态列表。
良好的代码复用(Angular库)。
优点:
接口设计与学习API容易。
与其他JavaScript框架相比,具有显著性能。
更新速度快。React创建一个新的虚拟DOM,利用最近数据与比较上个版本的差异提供完善修复机制,创建一个最小的更新列表构成真正的DOM使其同步,而不是每次发生变化都进行重复渲染。
服务端渲染允许创建同构/通用的web apps。
容易导入组件,虽然有一些依赖。
更好的代码复用。
方便JavaScript的调试。
在提高复杂组件性能方面,Angular与React难分高低。
基于层次的全系组件。
JSX,一个JavaScript扩展语法,允许引用HTML与使用HTML标签语法来渲染子组件。
React Native 库。
评论删除后,数据将无法恢复
评论(16)
引用来自“大漠穷秋”的评论
我给你顶!引用来自“方施杰”的评论
为什么不把vuejs 在一起比较啊?引用来自“rockkratos”的评论
这几个框架我都用过1. Ember 2.x已经没有script标签在页面里了,但是dom污染还是有的,Ember在开发上的细节比较贴心,性能差点
2. React结合Flux确实学习需要些时间,性能不错,但是vue2.x跟它有一拼,整合第三方js库方面,真的很伤
3. Angular1.x 学习成本不高,整合第三方框架也还算方便,但是想写好directive还是需要点时间的
4. Angular2.x 重新设计了,组件化,没有使用React那种虚拟dom,但是性能却跟React差不多,官方推荐使用
TypeScript,ES6也可以,但是文档大多是ts的
5. Vue2.x 刚刚做了点东西,整体感觉还不错,结合了Angular和React的一些优点,比React入门低一些,也有像
Element UI这种UI库了