选择最适合项目需求的JavaScript框架,可以提高你发布有竞争力的web app的能力。
最后,你对基于JavaScript的app或网站找到了一条奇妙的思路。选择正确的框架可能对你项目的成功有着相当大的影响。它可以影响你按时完成项目并在将来维护代码的能力。JavaScript框架,如Angular.js,Ember.js或React.js,给你的代码带来结构,并保持其有序化,从而使您你的app更灵活,更具可扩展性,并更容易开发。
Web开发的变化发生的很快。几乎每个月都会引入一个新的JavaScript框架,并且现有的框架经常被更新。由于这些框架是开放源代码的,因此世界各地的大型社区也都可以不断地使之丰满起来。因此,了解每个框架的优点和它们之间的区别并不是一件容易的事情。
许多开发人员因为JavaScript框架的种类繁多而感到眼花缭乱——框架外观和功能非常不同。
让我们来比较一下三个最流行和广泛使用的JavaScript框架的优势:AngularJS,ReactJS和EmberJS。
框架 |
AngularJS |
ReactJS |
Ember.js |
是什么? |
超级JavaScript MVW框架 |
一个不止用于构建用户界面的JavaScript库 |
一个用于创建高要求的web应用程序的框架 |
建立 |
由MiškoHevery建立于2009年 |
创建者:Jordan Walke,2013年开源 |
最初由Yehuda Katz于2007年创建叫做SproutCore,后被Facebook收购,并于2011年更名为EmberJS |
官方主页 |
http://www.php.cn/ |
http://www.php.cn/ |
http://www.php.cn/ |
Github |
http://www.php.cn/ |
http://www.php.cn/ |
http://www.php.cn/ |
Bug 报告 |
http://www.php.cn/ |
http://www.php.cn/ |
|
许可证 |
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 |
Angular.js是一个开源的Web应用程序框架,具有由Google提供的Model-View-Controller(MVC)架构(Angular 1)和Model-View-ViewModel(MVVM)架构(Angular 2)。它是上面提到的三个框架中最古老的。因此,它拥有最大的社区。 Angular.js通过使用指令扩展HTML的功能来解决开发SPA(单页应用程序)的问题。此框架强调让你的app快速完成和运行。
优点:
创建自定义的文档对象模型(DOM)元素。
简单的UI设计和更改。
在HTML文档中创建输入字段时,将为每个已渲染字段创建单独的数据绑定。Angular倾向于在重新渲染之前检查页面上的每个单个绑定字段的任何变化。
依赖注入。
简单路由。
易于测试的代码。
此框架利于HTML语法的扩展,并通过指令创建可重用的组件。
强大的模板构建解决方案。在HTML属性中使用绑定表达式来驱动模板功能。Angular的模板引擎对DOM有着深入的理解,且其结构良好的模板减少了创建结果页面所需的代码总量。
数据建模限于小数据模型的使用,以使代码简单易于测试。
在渲染静态列表时速度快。
伟大的代码重用(Angular库)。
缺点:
指令API的复杂性。
对于具有许多交互元素的页面,Angular变得缓慢。
原始设计往往很慢。
由于许多DOM元素,性能方面有问题。
复杂的第三方集成。
陡峭的学习曲线。
范围很容易使用,但很难调试。
路由受限。
注意。Angular 2的功能与上述不同。Angular 2不是从Angular 1重新设计的,它被完全重写了。两个版本的框架之间的巨大变化在开发人员之间引起了相当大的争议。
ReactJS是一个开源的JavaScript库,用于构建高性能的用户界面,专注于由Facebook引入和提供的惊人的渲染性能。React专注于模型视图控制器(Model View Controller)架构中的“V”。在React第一次发布后,它迅速吸引了大量用户。它是为了解决与其他JavaScript框架的常见问题——大数据集的高效渲染而创建的。
优点:
简单的界面设计和学习API。
比其他JavaScript框架显着的性能提升。
更快的更新。React使用最新的数据创建新的虚拟DOM和修补机制,并高效地将其与以前的版本进行比较,创建一个最小的更新部分列表,使其与真正的DOM同步,而不是每次更改时重渲染整个网站。
服务器端渲染允许创建同构/通用web app。
容易导入组件,尽管具有很少的依赖性。
良好的代码重用。
非常适合JavaScript调试。
完全有可能用React增强Angular以增强麻烦的组件的性能。
完全基于组件的架构。
JSX,一种JavaScript扩展语法,允许引用HTML并使用HTML标记语法来渲染子组件。
React本地库。
缺点:
不是一个完整的框架,而是一个库。
非常复杂的视图层。
Flux架构不同于开发人员习惯的范例。
很多人不喜欢JSX。
陡峭的学习曲线。
将React集成到传统的MVC框架,如Rails中需要一些配置。
EmberJS是一个用于创建单页面客户端Web应用程序的开源JavaScript应用程序框架,使用Model-View-Controller (MVC)模式。此框架提供通用数据绑定和URL驱动方法,用于构建不同的应用程序,重点放在可扩展性。
Ember在2007年最初被发布时,叫做SproutCore。2011年,它被Facebook收购,并重命名为Ember。它结合了本地框架,例如Apple的Cocoa的经过验证的概念以及轻量级的敏感性。
优点:
约定优于配置。Ember.js不是为应用程序中的各种路由提供详细的配置,而是喜欢遵循命名约定并自动生成结果代码,仅在不遵守约定的情况下指定配置。
客户端渲染和结构到可扩展的web应用程序超出视图层。
URL支持。
Ember的对象模型利于键值观察。
嵌套的UI。
最小化DOM。
适用于大型应用程序生态系统。
强数据层与Java集成良好。
完全成型的模板机制(Handlebars模板引擎构建在流行的Mustache 模板引擎上)减少了编写的代码总量。它对DOM一无所知,而是依赖于直接的文本操作,动态地构建HTML文档。
使用观察者来改变值,这将导致仅渲染更改的值。
通过使用附件避免“脏检查”。
更快的启动时间和固有的稳定性。
性能焦点。
友好的文档和API。
缺点:
Ember.js缺少控制器级别的组件重用。
有很多过时的不再工作的内容和示例。
陡峭的学习曲线。
Handlebars使用许多