使用 React 是业务需求,而不是技术需求

欢迎移步我的博客阅读:《使用 React 是业务需求,而不是技术需求》

前言

React 已经在开发者圈越来越流行了,并且有很多说明其技术优势的资源。然而,迁移(或是选择)一个新的框架最终归结为向所有人推销 —— 包括非开发者。这里会有一小部分工程经理或项目经理会因为它的新颖,而选择使用它来重构,更糟的是,很多团队被 JavaScript 的高生产工具搞得焦头烂额了,可悲的是向后移动项目是向前移动 web 的一部分。这篇文章并不是试图教你关于 React 的新东西,只是试着去总结以下,起点是为了向所有人说明 React 的疑惑,不仅是开发者。

总结:React 是一个为创建可组合的用户界面的库。同比其他类似的库如 Angular、Backbone、Knockout 和 Ember,React 的出现是为了解决业务问题而非技术的。接下来会为你解释 React 的重要性和对开发团队的益处。

降低风险

稳定性 —— Facebook 花了很大的精力在 React 上(Newsfeed,Instagram,Messenger,Ads Marketplace 等),并且拥有专职的技术团队来维护这个项目。它的 dog-food 测试和投资都不是现有的任何一个项目能比的。除了 Facebook 内部的工程师,还有一大批 React 的爱好者。随着版本的更迭,目前在 github 上拥有 571 个贡献者(截止到 2015 年 12 月)。

正在使用 React:AirBnB,Asana,Atlassian,BBC,Chegg,CloudFlare,CNN.com,Codecademy,Coursera,Craftsy,Dailymotion,Dropbox,Expedia,Facebook,Feedly,Flipboard,HipChat,IMDb,Imgur,Instagram,Khan Academy,KISSmetrics,Mattermark,Minerva Project,Netflix,OkCupid,Rackspace,Rally Software,Ralph Lauren,Reddit,Redfin,Salesforce,Squarespace,The New York Times,Trunk Club,Twitter,Uber,University of Cincinnati,Venmo,WhatsApp,Wired,Wix,WordPress,Yahoo,Zendesk

开发效率

强大的路径迁移 —— React 允许开发者可以根据自己的需求将其放到任何一个已经存在的页面上。值得注意的是,React 是需要加载一个运行时的库(React 0.14.0 的大小是 39.4 kb),因此零碎的迁移会导致页面重量的增加,直到旧版本的库被移除才会减少。

默认情况下的性能 —— React 的使用模式,让它很难写出低性能的代码。此外,自从它减少了与 DOM 的直接交互,使得它不仅可以代替现有的一些库(Angular/Backbone/Ember),也不再需要大量像 jQuery 一样的依赖,从而减少整体部署代码大小。

SEO —— SEO 是从服务器发送一个已经渲染好的页面到浏览器上。React 在设计时就考虑到了 SEO,它用 Node 可以在客户端或服务端进行渲染。其他工具允许在服务端进行渲染,但需要引入一些不稳定的 hack,同时还需要大量的人员去维护。而 React 有可能简化构建工具和减少维护成本。

提高了代码的重用 —— React 在提供良好的性能同时还可以管理组件的渲染生命周期,如此一来可以显著地提高开发人员的开发效率。通过可重用组件的创造、分配和使用,使之更简单,这样开发人员就能更好地节省使用和开发通用组件的时间。就如按钮一样的低阶元素和可折叠元素一样的高阶元素。

提高开发效率

从混合资源中降低复杂度 —— React 混合了 HTML 和 JavaScript,在此原则下,它们被紧紧地捆在一起,而分离它们是分离技术,这不是关注点。这个概念可以进一步扩展到 CSS,删除 CSS 开发过程中的一连串问题,包括全局命名、作用域/变量的隔离。详细请看:RadiumReact: CSS in js

错误的快速隔离 —— Facebook 提供了一个浏览器的扩展应用,帮助开发者更好地查看某一 UI 是由哪些 component 和数据组合生成的。详细请看这里

简洁明了的代码 —— 当前绝大多数的工具,都是以模型表示数据和视图显示数据结合在一起,从而生成丰富的 UI 交互。通常修改一个模型或视图(例如购物车)就可能在其他视图中触发“级联变化”,同时它依赖的是相同的数据。在一个大型应用中,依赖视图会变得很复杂,而且很难修复那些意想不到的 BUG。但是在 React 中,数据的流向是单向的,因此使得视图更容易理解。下面的图是展示信息的流动。

stream
stream

提高了易测性 —— 一个组件,React 的通常做法是抽象数据参数和输出一个没有其他副作用的 DOM。通过移除依赖使用和在 DOM 中创建 state 的 store,使得这些组件拥有更多的原子和可测试性。

开发团队的效益

快捷的管理 —— React 的 API 非常小,结合声明性语法和组件化的 UI 元素使新的开发人员能更快地上手 —— 特别是刚毕业的大学生或是不熟悉前端坏境的开发者。

案例

Facebook Ads

“It was extremely difficult to change without causing some side effect or bug somewhere else in the application … When the team rebuilt it in React they found that their rate of new bugs being introduced had gone through the floor”

-Spencer Ahrens

“When a bug did come in it was much easier to figure out what was going wrong and make a targeted fix”

-Spencer Ahrens

Netflix

“React has exceeded our requirements and enabled us to build a tremendous foundation on which to innovate the Netflix experience”

Hit Chat

“The dev speed we’ve gained…proves that we can release new client features faster and with more confidence on this platform than on any native client.”

原文链接

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

推荐阅读更多精彩内容