facebook:我们为什么构建React
2016-09-04 21:41
260 查看
原文地址:https://facebook.github.io/react/blog/2013/06/05/why-react.html
JS如今已有诸多MVC框架,为什么还要构建和使用React?
初次翻译,如有错误,欢迎指正~。~
React的不同之处在于,它把界面分解成了一个个的UI组件。
这意味着React使用一种真正的、全能的编程语言来渲染视图,正如我们所见,React与模板相比,有以下优点:
如果你更喜欢原生JS,我们还创建了JSX(一种可选的扩展语法)。
传统的js应用,你需要看一下有哪些数据变化了,然后再去刷新DOM。即使是AngularJS,也只是提供了声明接口和数据绑定,需要一个关联函数来手动地刷新DOM节点。
React另辟蹊径。
当组件第一次初始化时,render方法被调用,为视图创建一个轻量级的表现(representation)。通过这个表现,再创建一个标签字符串并注入到文档中。当数据改变时,render方法再次被调用。为了更有效地更新视图,通过对比上一次调用render的返回值和这次调用产生的新值,最小限度地更新DOM。
调用render方法返回的数据既不是字符串也不是DOM节点,而是关于如何渲染DOM的轻量级描述。
这个过程可以叫做reconciliation(调和)。您可以在jsFiddle上调试这个过程。
由于再次调用render的速度如此之快(整个过程大概1ms左右),开发者不需要明确地指定数据绑定,这使得开发更简单。
您可以到官网 facebook.github.io/react 上查看详情,上有针对基于React构建应用的文档,如果您对具体细节感兴趣,可以联系我们。
感谢阅读!
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构建应用的文档,如果您对具体细节感兴趣,可以联系我们。
感谢阅读!
相关文章推荐
- Facebook:我们是如何构建第一个跨平台的 React Native APP
- 【React】《Why did we build React?》 我们为什么要创建React-译文
- Facebook如何使用“我们”的数据去构建人工智能
- 为什么我们要造React?
- 前端自动化构建入门6-使用webpack改造我们的react应用
- Windows下安装和构建我们第一个React Native应用程序(我是用的win10)
- 一、为什么要构建自己的持久层,我们构建一个什么样的持久层
- Web全栈工程师到底是个什么鬼?为什么Facebook声称:“我们只招全栈工程师!”
- (ZT)为什么iPad版FaceBook值得我们苦苦等待
- 使用Facebook的create-react-app快速构建React开发环境
- 为什么我们缺乏特立独行的人生态度
- 市场竞争这么大 为什么我们不提供免费建站
- 我为什么离开Facebook
- [译] Web Components 是什么?它为什么对我们这么重要?
- 当推荐算法开源包多如牛毛,为什么我们还要专门的推荐算法工程师
- 为什么很多看起来不是很复杂的网站,比如 Facebook 需要大量顶尖高手来开发?
- 【转载】我们为什么需要Windows Workflow Foundation?
- 为什么我们不能成为牛逼的站长
- 我们为什么要推出ASP.NET栏目?