您的位置:首页 > Web前端 > React

facebook:我们为什么构建React

2016-09-04 21:41 260 查看
原文地址:https://facebook.github.io/react/blog/2013/06/05/why-react.html

JS如今已有诸多MVC框架,为什么还要构建和使用React?

初次翻译,如有错误,欢迎指正~。~

React不是MVC框架

React是一个UI(user interfaces,用户界面)组件库,它鼓励创建可复用的UI组件,这些组件展示了随时间变动的数据。

React不使用模板

传统的web界面使用模板或HTML指令进行构建,按照这些模板的规定,你只能一整套地使用它们来构建你的UI界面。

React的不同之处在于,它把界面分解成了一个个的UI组件。

这意味着React使用一种真正的、全能的编程语言来渲染视图,正如我们所见,React与模板相比,有以下优点:

* Js是一种灵活而强大的编程语言,有能力创建抽象(abstractions?)。这在大型应用中是非常重要的。
* React通过统一相应的视图逻辑标签,让视图更容易扩展和维护。
* React通过将标签和内容到JS,不需要手动拼接字符串,也因此减少了XSS漏洞。


如果你更喜欢原生JS,我们还创建了JSX(一种可选的扩展语法)。

响应式更新超简单

React最炫酷的是数据随时间而变化。

传统的js应用,你需要看一下有哪些数据变化了,然后再去刷新DOM。即使是AngularJS,也只是提供了声明接口和数据绑定,需要一个关联函数来手动地刷新DOM节点。

React另辟蹊径。

当组件第一次初始化时,render方法被调用,为视图创建一个轻量级的表现(representation)。通过这个表现,再创建一个标签字符串并注入到文档中。当数据改变时,render方法再次被调用。为了更有效地更新视图,通过对比上一次调用render的返回值和这次调用产生的新值,最小限度地更新DOM。

调用render方法返回的数据既不是字符串也不是DOM节点,而是关于如何渲染DOM的轻量级描述。

这个过程可以叫做reconciliation(调和)。您可以在jsFiddle上调试这个过程。

由于再次调用render的速度如此之快(整个过程大概1ms左右),开发者不需要明确地指定数据绑定,这使得开发更简单。

HTML只是开始

由于React在文档中的轻量级表现,我们可以利用React做很多很酷的事情:

* Facebook用<canvas>代替HTML来渲染动态图表
* Instagram是一个完全使用React和Backbone.Router的“单页应用”,开发人员可以使用JSX编写React代码
* 我们构建了内部原型,使React应用可以在浏览器上运行,并且用React桥接Object-C,来驱动原生iOS视图
* 可以在服务器上运行React,以便SEO、提高性能、共享代码、提高整体灵活性
* 兼容浏览器(包括IE8),在不同的浏览器效果一致,并且自动使用事件代理机制


您可以到官网 facebook.github.io/react 上查看详情,上有针对基于React构建应用的文档,如果您对具体细节感兴趣,可以联系我们

感谢阅读!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  框架