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是否有更好的解决方案.那么你就来对了. 客观来说,作为核心团队成员,显然我们会 ...
随机推荐
- [转载]expect spawn、linux expect 用法小记
原文地址:expect spawn.linux expect 用法小记作者:悟世 使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写 ...
- 子PID namespace中获取父namespace中pid的方法
在那篇< 使用独立PID namespace防止误杀进程>中的最后,我碰到了一个难题,那就是父PID namespace中的进程无法使用进入子PID namespace中通过echo $$ ...
- windows下安装Django
因为Django本身是由Python编写,所以先要安装Python.下载地址(可以根据读者当前版本自行下载):http://www.python.org/download/releases/3.3.4 ...
- es6笔记1^_^let、string、number、math
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本 ...
- java基础练习 8
public class Eighth { /*判断101-200之间有多少个素数,并输出所有素数.素数又叫质数,就是除了1和它本身之外,再也没有整数能被它整除的数.也就是素数只有两个因子.*/ pu ...
- LIst去重,重写方法,继承接口。
调用: ]).ToList(); var dic = dataThis.Distinct( new repDic()).ToList();var repList = ""; for ...
- emacs 使用教程
http://www.cnblogs.com/liuchaogege/p/4464211.html
- Beego学习笔记——Config
配置文件解析 这是一个用来解析文件的库,它的设计思路来自于database/sql,目前支持解析的文件格式有ini.json.xml.yaml,可以通过如下方式进行安装: go get github. ...
- svn自动备份并上传到ftp
.建立bat文件 simpleBackup.bat,文件内容如下 @echo 正在备份版本库%1......@%SVN_HOME%bin\svnadmin hotcopy %1 %BACKUP_DIR ...
- ViewPager和View的事件响应规则
案例背景: 当我们实现viewpager的自动切换界面操作的时候,如果需要增加点击图片viewpager停止自动切换,松开手指viewpager自动切换又继续执行的逻辑,正常思维下实现代码如下所示: ...