react总结
在我的工作用到的最多就是backbone,其次还会有ember/Ext,backbone目前能实现我们team所需要实现的功能,因为我们的component不需要频繁的操作Dom,当后台API返回数据之后,就刷新整个component,就没有必要去用react 里面的虚拟dom 去实现了。但是后来有个新的需求,需要做一个频繁操作DOM的setting component,这是用backbone就完全体验不到backbone能带来的便捷,还是需要在整个DOM渲染完成之后,去获取DOM 节点,然后操作DOM节点,这样很耗性能。不过还好,我们的team对于这种需求还是比较少了。
下面不得不提为什么那么多team选择用react去开发他们的产品,react在那些方面有提升呢?
React 是一个用于创建可复用,可聚合的web component 的js库。React是提供了MVC中的V层,并不是一个完整的MVC框架。
1.组件化,而不是写一大堆的HTML模板
react将js逻辑和HTML标签封装到一起,使js和html紧密连接,有助于理解。
在backbone/angalur里面都是需要template进入一个html模板,但是react只需要一个render方法,把html 作为render的返回值就行了
2.单向数据流(unidirectional data flow)
单向数据流听起来很低级,没有双向数据流那么高级。但是react为什么选择用单向数据流呢?
单向数据流和之前angular提出的two way data binding想比较而言,使各种变化变得可预计、可控制的。不会向two way 打他binding那样,变化一旦复杂起来,大家相互触发变化,到最后一个地方变 了,你根本猜不出来还会导致其他什么地方跟着变,这对一个team来学,学习成本也是很大的。react还提供了不可变数据,大大的节约了脏检查的消耗。那么还有其他的好处,比如:
每个组件是干啥的,很直观
结果更加可预测
组件之间的关系更加清晰
没有确切的DOM操作
不再有数据模型的肮脏检查
react单向特性导致数据一旦更新,就会渲染整个app,这样听起来好像也是挺低级的,渲染这个app也是耗性能的。但是当你创建一个很复杂的组件的时候,去管理UI的状态就不是一件简单的事情了。
通常管理UI的状态需要以下几步:
1.接受用户的输入
2.异步API数据请求
3.修改数据
4.修改DOM
分析到这里,发现我们项目用的backbone完全可以被替代掉。
比较一下backbone和react渲染
backbone:
1.浏览器请求页面
2.服务器请求数据库
3.将数据传给模板
4.模板渲染页面
react:
1.用户输入
2.从API获取数据
3.将数据传给顶层组件
4.React将每个组件渲染出来
3.虚拟DOM Tree
Js虽然很快,但是dom操作很慢。
React在每一个更新时,都活重建DOM tree,找到与上一个版本的DOM的差异,计算出最新的DOM更新操作,然后从草最队列中批量的执行更新DOM操作
React的jsx使react的代码更易懂
4.React可以在服务器端渲染(这个还么有实践过,只是知道可以在服务器端渲染)
1.支持SEO关键字收录
2.用户访问不需要等待过程的loading动画
3.支持同构
4.支持更多的后端如nodejs模板
(这只是当前阶段的一个简单理解,后续还会有更新。。。。)
react总结的更多相关文章
- react组件的生命周期
写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...
- 十分钟介绍mobx与react
原文地址:https://mobxjs.github.io/mobx/getting-started.html 写在前面:本人英语水平有限,主要是写给自己看的,若有哪位同学看到了有问题的地方,请为我指 ...
- RxJS + Redux + React = Amazing!(译一)
今天,我将Youtube上的<RxJS + Redux + React = Amazing!>翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: https:/ ...
- React 入门教程
React 起源于Facebook内部项目,是一个用来构建用户界面的 javascript 库,相当于MVC架构中的V层框架,与市面上其他框架不同的是,React 把每一个组件当成了一个状态机,组件内 ...
- 通往全栈工程师的捷径 —— react
腾讯Bugly特约作者: 左明 首先,我们来看看 React 在世界范围的热度趋势,下图是关键词“房价”和 “React” 在 Google Trends 上的搜索量对比,蓝色的是 React,红色的 ...
- 2017-1-5 天气雨 React 学习笔记
官方example 中basic-click-counter <script type="text/babel"> var Counter = React.create ...
- RxJS + Redux + React = Amazing!(译二)
今天,我将Youtube上的<RxJS + Redux + React = Amazing!>的后半部分翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: ht ...
- React在开发中的常用结构以及功能详解
一.React什么算法,什么虚拟DOM,什么核心内容网上一大堆,请自行google. 但是能把算法说清楚,虚拟DOM说清楚的聊聊无几.对开发又没卵用,还不如来点干货看看咋用. 二.结构如下: impo ...
- React的使用与JSX的转换
前置技能:Chrome浏览器 一.拿糖:React的使用 React v0.14 RC 发布,主要更新项目: 两个包: React 和 React DOM DOM node refs 无状态的功能 ...
- Vue.js 2.0 和 React、Augular等其他框架的全方位对比
引言 这个页面无疑是最难编写的,但也是非常重要的.或许你遇到了一些问题并且先前用其他的框架解决了.来这里的目的是看看Vue是否有更好的解决方案.那么你就来对了. 客观来说,作为核心团队成员,显然我们会 ...
随机推荐
- 跨站脚本攻击(Cross‐Site Scripting (XSS))
跨站脚本攻击(Cross‐Site Scripting (XSS)) 跨站脚本攻击(Cross‐Site Scripting (XSS)) XSS(Cross Site Script)跨站脚本攻击.是 ...
- C# 与 C++强强联合--C#中的指针
C# 与 C++强强联合--C#中的指针 非常的不好意思,距离上次随笔C# 与 C++强强联合已经过去快1个月了.承诺大家的C#指针和A*算法迟迟未上.为表歉意献上美女一枚 哈哈.流口水了吧 话归正题 ...
- HDOJ 1755 - A Number Puzzle 排列数字凑同余,状态压缩DP
dp [ x ] [ y ] [ z ] 表示二进制y所表示的组合对应的之和mod x余数为z的最小数... 如可用的数字为 1 2 3 4...那么 dp [ 7 ] [ 15 ] [ 2 ] = ...
- 【2013Esri全球用户大会精彩看点】ArcGIS 10.2移动产品新特性
Ø 全新的应用Explorer for ArcGIS 在2013年第四季度,Esri将发布全新的应用Explorer for ArcGIS,它将联合Collector和Operations Dashb ...
- kubernetes入门之快速部署
角色说明 这里主要有三个角色,分别部署不同的服务. 角色 服务 etcd etcd master kube-apiserver/kube-scheduler/kube-controller node ...
- 通过python为zabbix发送告警邮件
最近部署ZABBIX的邮件告警时,用刚学的python来写告警邮件脚本. 由于时间有限,我只对关键步骤做截图,对zabbix的基本配置略过. python代码如下 1 #!/usr/bin/pytho ...
- struts2框架学习(二)
---恢复内容开始--- 一.搭建步奏 1.新建web项目,进行必备Jar包的拷贝,放到lib目录以便项目的引用. 2.拷贝框架的核心配置文件Struts.xml,放到src目录下,保留一个基本配置即 ...
- oracle 增加表空间
1.表空间使用情况 SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D ...
- java集合图示
- Tomcat启动极慢问题
启动后,catalina.out日志中会有如下打印: INFO: Creation of SecureRandom instance ,] milliseconds 具体原因,有兴趣的可以自己百度一下 ...