为什么我们选择Angular 2 而不是 React用于我们的企业级应用开发

作者:Justin Goodhew原文链接

由于这在开发者社区中是一个非常有争议的话题,所以随着我们更深入的理解并结合收到的反馈,我们将不断更新这篇博客。我也想推出一些限定词,所以大家都明白我们来自哪里。

我们的背景

我们的公司由我的联合创始人和首席技术官,瑞恩·坎贝尔领导,一位拥有18年的经验的软件架构师,过去10年在大型企业。 当我们决定使用Angular 2时(现在已经是Angular 4了),他已经熟悉Angular 1了。但是,在决定使用Angular之前,我们还在React中构建了一个应用程序。

我们也相信Angular和React都是伟大的选择,并允许一些惊人的产品(React:Messenger和Angular:healthcare.gov)在其上建立和发展。 根据具体项目,团队以及他们的经验/喜好,制定更加切合实际的决策。 本文的目的是让您了解我们的思想过程,并了解我们采用Angular的旅程中的一些发现。

以下是两种技术的简要概述:

Angular 2—由Google支持,是最新的JS(javascript)框架。

主要特点:

坚持己见—用“Angular 方式”写东西

Typescript (微软支持)通常能提高效率

有很多由Google支持的样板文件和可重复使用的组件

React—由Facebook支持,是一个在JS语言中的,而不是一个框架

主要特点:

开放—React允许开发人员更多的灵活性和自由度

更自由的选择

更新和频繁的更改

库 vs. 框架

最大的区别是它们是如何组织的。 React是一个,angular是一个框架。 定义如下:

库:我将使用React库,现在我必须决定所有其他将要用到的支持库:路由,model 管理和构建工具。

框架:我将使用Angular 2,让我们开始用Angular 2的方式构建一个应用程序。

因此,我们不会将Angular 2与独立的React进行比较,我们正在与React以及获得与Angular 2功能相同的所有其他软件包(类似React + Redux + React router + Babel)进行比较。

我们的 React 经验

当我们在React中构建一个应用程序时,我们真的喜欢这个库。我们对所有的可能性感到兴奋,前期学习远低于Angular。当我们开始构建我们的第一个React Native应用程序时,我们的团队对React的经验有限,而且生态系统频繁更新。

我们知道我们可以使用React来快速创建一个MVP,这是非常重要的,因为这个项目的排期很短。我们的第一步是获得项目设置,这意味着找到正确的配套工具进行集成。这是我们犯了重大错误的地方。我们选择使用 @exponent/ex-navigator 一个路由器库,它似乎有很好的支持,是由exponentjs开发的,他们以React生态系统中的优质工具而闻名。

我们开始整理应用程序的原型,直到我们开始尝试传递数据的应用程序,我们注意到,这个路由器是不实用和废弃的。你必须改变state ,通过导航器传递它,这是你不应该在现代React应用程序中做的第一件事情。

这个经历让我们对使用React构建应用程序感到失望。 React本身是令人惊讶的,在我们的团队中没有一个关于React本身的意见。不幸的是,我们选择的库却不可同日而语。但这是我们自己的错误,如果你对你的初始选择更加谨慎,你可以避免这些问题。然而,总是存在你正在使用的库被废弃的风险。

我们的 Angular 2 经验:

我们用 Angular 构建了多个应用。 Angular 2框架中的所有部分,包括高级架构都由Google提供支持。这真的帮助大家融入同一个页面,标准化大团队,但它也导致了一些问题。

对于初学者,需要很多思考才能入门Angular 2和它提供的每个模块。它感觉像一个企业开发人员会熟悉的高质量框架。它正在推动基于Web的应用程序框架中预期的界限。 我们一直在使用jQuery甚至是Backbone来开发应用程序。我们的团队喜欢Angular 2 的依赖注入,使用响应式编程可观察模式构建的内置即用型HTTP模块,一个精心设计的Angular 2 升级程序允许将大型项目逐个移动到Angular 2。

我所遇到的唯一缺点是框架的一切还没有完全被记录下来。 到目前为止,Angular的文档质量很好,但是只能涉及到许多Angular 2模块的表面。作为一个团队,我们通过深入了解Angular 2源代码并分享我们的知识,成为专家,一起工作。

一般来说,Angular 2给我们留下了深刻的印象,它是我们的首选框架。我们已经能够比过去的框架更容易完成功能。 TypeScript,记录的最佳实践,以及Angular 2架构使构建应用程序更愉快。我们能够了解OOP,设计模式和最佳实践架构,并将其应用于web。

为什么Angular更好?

我们的客户主要是希望从开源获益的大型企业。 当选择软件时,他们关心通过以下方式降低风险:

技术一致性

社区支持

清晰的最佳实践

最小未知

他们有数百万的用户,以及数百万或数十亿美元,受他们管理的软件影响。 这些决定是至关重要的,有时甚至关乎生死。

他们还坚持使用一种技术很长时间,需要一致性,清晰的最佳实践和最小未知。

必须降低技术风险,以允许企业利用开源的力量,并从开源社区提供的惊人的工作中获益。

企业如何量化风险?

企业在三个不同领域量化风险:支持,社区和风险。 当在这些领域中比较React和Angular 2时,根据企业的需求,你可以更好地了解为什么Angular 2有利于他们。

周边的技术支持

React —中断支持很快,保持更新是很困难的

Angular 2 —Google公开支持时间和版本迭代安排:2.0版之后没有更多突破性变化(平滑升级到 V4)

可雇佣

React

大量社区追随者,会有大量人才储备。

更少标准化/更多培训 - 由于技术的开放性开发者将以自己的方式构建。

Angular

大量社区追随者,会有大量人才储备。

上手简单 - 开发人员将遵循类似的最佳实践。

标准化 - Google撰写了如何使用框架的最佳实践。

被支持者/创造者遗弃的潜在风险

React

支持 - 高度支持,增长的社区。

依赖他人 - 高。 库由Facebook支持,但其他需要的部分基本由第三方建立。

Angular

支持 - 高度支持,增长的社区。

依赖他人 - 全面支持。 最小化依赖于除Google和他们的开发团队之外的其他人。

结论

基于我们与React和Angular 2开发的经验以及客户的需求,我们决定使用Angular。 这并不意味着我们不能接受新的选择,但是现在,对于我们的客户,Angular符合他们的需求,我们对结果感到非常激动。

我们知道有很多关于这个问题的意见,所以请随时让我们知道你选择了什么,原因为何。 我们将深入探讨这两个框架中的调试和开发工具,以便更新。

个人建议:Angular 2运行速度快,数据双向绑定页面及时更新。

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,039评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,649评论 18 139
  • 本文来自于:葡萄城控件技术团队博客 如今,Angular和React这两个JavaScript框架可谓红的发紫,同...
    zenmshuo_2919阅读 609评论 0 2
  • 一天又一天 一年又一年的过去 每天在烦恼不同的事情 觉轻易醒 还太过在乎别人的看法 总是被外界的声音打乱脚步 生是...
    castlelx阅读 190评论 0 0
  • 毕业一个多月的时候,还没有找到稍微适合自己的工作。于是,开始“投机取巧”,想去通过熟人找到合适的工作。一一拨打了通...
    飞鸽传书hanfei阅读 288评论 1 2