深入浅出React(一)React的设计哲学简单之美.docVIP

深入浅出React(一)React的设计哲学简单之美.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深入浅出React(一)React的设计哲学简单之美.doc

深入浅出React (一): React的设计哲学-简单之美 编者按:自2013年Facebook发布以來,React吸引了越来越多的开发者,基于它的衍生 技术,如React Native、React Canvas等也层出不穷。InfoQ精心策划“深入浅出React” 系列文章,为读者剖析React开发的技术细节。 React最初来自Facebook闪部的广告系统项目,项目实施过程屮前端开发遇到了巨人挑战, 代码变得越來越臃肿且混乱不堪,难以维护。于是痛定思痛,他们决定抛开很多所谓的“最 桂实践”,重新思考前端界而的构建方式,于是就有了 React。 React带来了很多开创性的思路来构建前端界而,虽然选择React的最重要原因之一是性能, 但是相关技术背后的设计思想更值得我们去思考。之前我也曾写过一篇React的入门文章, 并提供了示例代码,大家可以结合参考。 上个月React发布了最新的0.13版,并提供了对ES6的支持。在新版本中,一个小小的改 变是React取消了函数的自动绑定,也就是说,以前可以这样去绑定一个事件: 〈button onClick={this.handleSubmit}Submit〈/button 而在以ES6语法定义的组件中,必须写为: button onClick={this.handleSubmit.bind(this)}Submit/button 了解前端开发和JavaScript的同学都知道,做事件绑定时我们需要通过bind(或类似函数) 來实现一个闭包以让事件处理函数自带上下文信息,这是由JavaScript语言特性决定的。 而在0.13版本之前,React会自动在初始化时对组件的每一个方法做一次这样的绑定,类 似于this, func = this. func. bind (this),这样在JSX的事件绑定中就川以直接写为 onClick={this. handleSubmit}。 表面上看自动绑定给开发带來了便利,而Facebook却认为这破坏了 JavaScript的语言习 惯,其背后的祌奇(Magic)逻辑或许会给初学者带来困惑,甚至开发者如果从React再转 到其它库也可能会无所适从。基于同样的理由,React还取消了对mixin的支持,基于ES6 的React组件不再能够以mixin的形式进行代码复用或者扩展。尽管这带来了很人不便,但 Facebook认为mixin增加了代码的不可预测性,无法直观的去理解。关于mixin的思考, 还可以参考这篇文章。 以简单直观、符合习惯的(idiomatic)方式去编程,让代码更容易被理解,从而易于维护和 不断演进。这正是React的设计哲学。 编写可预测,符合习惯的代码 所谓可预测(predictable),即容易理解的代码。在年初的React开发者大会上,React 项目经理Tom Occhino进一步阐述React诞生的初衷,在演讲屮提到,React最大的价伉 究竟是什么?是高性能虚拟DOM、服务器端Render、封装过的事件机制、还是完善的错 误提示信息?尽管每一点都足以重要。但他指出,某实React最有价值的是声明式的,直 观的编程方式。 软件工程向来不提倡川高深莫测的技巧去编程,相反,如何写出可理解可维护的代码冰是质 量和效率的关键。试想,一个月之后你回头看你写的代码,是否一眼就明白某个变量,某个 if判断的含义;一个新加入的同事想去增加一个小小的新功能或是修复某个Bug,他是否对 向己的代码有足够的信心不引入任何副作用?随着功能的增加,代码很容易变得越来越复杂, 这些M题也将越来越严重,最终导致一份难以维护的代码。而React号称,新同事甚至在 加入的第一天就能开始开发新功能。 那么React是如何做的呢? 使用JSX直观的定义用户界面 JSX是React的核心组成部分,它使用XML标记的方式去直接声明界而,界而组件之间可 以互相肷套。但是JSX给人的第一印象却是相当“丑陋”。当下面这样的例子被第一次展示的 时候,甚至很多人称之为“巨大的退步(Huge Step Backwards) ”: var React = require(rReacV); var message = div class=frhello” onClick={someFunc} spanHello World/span /div; React.renderComponent(message, document.body); 将 直接嵌入到JavaScript代码中看上去确实是一件足够疯狂的事情。人们花了多年 时间总结出的界面和业务逻辑相互分离的最佳实践”就这么被彻底打破。那么React为何要 如此另类? 模板出现的初衷是让非开发人员也能对界面做一定的修改。

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档