React是什么

React是如今(2015年)最热门的前端技术。

在React中。一切皆组件。

A JavaScript library for building user interfaces

React不过用于构建用户界面的js库(MVC中的V),不是完整的MV*框架,所以和Angular、Backbone和Ember没有可比性。

使用jQuery操作DOM的日子或许会成为过去。


React的特点

(1) 不过UI

React不过MVC中的V。

(2) 虚拟DOM

React为了更高超的性能而使用虚拟DOM作为其不同的实现。

它同一时候也可以由服务端Node.js渲染 - 而不须要过重的浏览器DOM支持。

虚拟DOM(virtual-dom)不仅带来了简单的UI开发逻辑,同一时候也带来了组件化开发的思想,所谓组件,即封装起来的具有独立功能的UI部件。

React推荐以组件的方式去又一次思考UI构成,将UI上每个功能相对独立的模块定义成组件。然后将小的组件通过组合或者嵌套的方式构成大的组件,终于完毕总体UI的构建。

(3) 单向数据流

React实现了单向响应的数据流,从而降低了反复代码。这也是它为什么比传统数据绑定更简单。


React在解决什么问题

在Web开发中,我们总须要将变化的数据实时反应到UI上,这时就须要对DOM进行操作。而 复杂或频繁的DOM操作一般是性能瓶颈产生的原因 (怎样进行高性能的复杂DOM操作一般是衡量一个前端开发人员技能的重要指标)。React为此引入了 虚拟DOM(Virtual DOM) 的机制:在浏览器端用Javascript实现了一套DOM API。基于React进行开发时全部的DOM构造都是通过虚拟DOM进行。每当数据变化时,React都会又一次构建整个DOM树。然后React将当前整个DOM树和上一次的DOM树进行对照,得到DOM结构的差别,然后只将须要变化的部分进行实际的浏览器DOM更新。并且React可以批处理虚拟DOM的刷新,在一个事件循环(Event Loop)内的两次数据变化会被合并,比如你连续的先将节点内容从A变成B,然后又从B变成A,React会觉得UI不发生不论什么变化。而假设通过手动控制,这样的逻辑一般是极其复杂的。虽然每一次都须要构造完整的虚拟DOM树,可是由于虚拟DOM是内存数据,性能是极高的,而对实际DOM进行操作的不过Diff部分,因而能达到提高性能的目的。这样。在保证性能的同一时候。开发人员将不再须要关注某个数据的变化怎样更新到一个或多个详细的DOM元素。而只须要关心在随意一个数据状态下。整个界面是怎样Render的。


【React】初识React的更多相关文章

  1. React 初识

    React We built React to solve one problem: building large applications with data that changes over t ...

  2. React初识整理(五)--Redux和Flux(解决状态传递问题)

    Flux 1.引入:在React的应⽤中,状态管理是⼀个⾮常重要的⼯作.我们不会直接对DOM节点进⾏操作,⽽是通过将数据设置给state,由state来同步UI,这种⽅式有个潜在的问题,每个组件都有独 ...

  3. React初识整理(四)--React Router(路由)

    官网:https://reacttraining.com/react-router 后端路由:主要做路径和方法的匹配,从而从后台获取相应的数据 前端路由:用于路径和组件的匹配,从而实现组件的切换. 如 ...

  4. 前端笔记之React(一)初识React&组件&JSX语法

    一.React项目起步配置 官网:https://reactjs.org/ 文档:https://reactjs.org/docs/hello-world.html 中文:http://react.c ...

  5. React学习笔记-1-什么是react,react环境搭建以及第一个react实例

    什么是react?react的官方网站:https://facebook.github.io/react/下图这个就是就是react的标志,非常巧合的是他和我们的github的编辑器Atom非常相似. ...

  6. 小谈React、React Native、React Web

    React有三个东西,React JS 前端Web框架,React Native 移动终端Hybrid框架,React Web是一个源码转换工具(React Native 转 Web,并之所以特别提出 ...

  7. React的React Native

    React的React Native React无疑是今年最火的前端框架,github上的star直逼30,000,基于React的React Native的star也直逼20,000.有了React ...

  8. React Navigation & React Native & React Native Navigation

    React Navigation & React Native & React Native Navigation React Navigation https://facebook. ...

  9. 重谈react优势——react技术栈回顾

    react刚刚推出的时候,讲react优势搜索结果是几十页. 现在,react已经慢慢退火,该用用react技术栈的已经使用上,填过多少坑,加过多少班,血泪控诉也不下千文. 今天,再谈一遍react优 ...

  10. React 与 React Native 底层共识:React 是什么

    此系列文章将整合我的 React 视频教程与 React Native 书籍中的精华部分,给大家介绍 React 与 React Native 结合学习的方法,此小节主要介绍 React 的底层原理与 ...

随机推荐

  1. javascript 原生得到document.Element的方法

    今天这里写这个博客的主要目的是记录一下javascript原生的选择dom的集中方法. 1.document.getElementById.这个方法接收1个参数,就是DOM元素的id(区分大小写),这 ...

  2. Mybatis源码分析之结果集处理

    解析封装 ResultMap 是和结果集相关的东西,最初在解析 XML 的时候,于 parseStatementNode 方法中,针对每一个 select 节点进行解析,转换为 MappedState ...

  3. JAVA基础关键字小结一

    基础部分总是看起来简单,若要明白原理和使用场景,需要慢慢的体会. 本文对常用的关键字如final,transient,volatile,static以及foreach循环的原理重新梳理了一遍. 一.f ...

  4. 【BZOJ 4663】 (最小割)

    4663: Hack Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 69  Solved: 26 Description 由于 FZYZ 教学区禁止使 ...

  5. Linux下sublime的中文输入问题

    比较久了,今天找到了解决方案: git clone https://github.com/lyfeyaj/sublime-text-imfix.git cd sublime-text-imfix &a ...

  6. 范浩强treap 普通平衡树

    增加Split(分裂),Merge(合并)操作,非常好写,时间也不比普通treap慢什么. #include<bits/stdc++.h> using namespace std; str ...

  7. [SimpleOJ238]宝藏探寻

    题目大意: 给你一棵带点权的n个结点的树,有m次询问,每次从树上删掉一条路径(u,v),问删掉每条路径后各个连通块权值和的平方之和. 每次询问是独立的. 思路: 首先对树遍历一遍求出每棵子树的权值和. ...

  8. Java并发(八):AbstractQueuedSynchronizer

    先做总结: 1.AbstractQueuedSynchronizer是什么? AbstractQueuedSynchronizer(AQS)这个抽象类,是Java并发包 java.util.concu ...

  9. hdu 4111 Alice and Bob 记忆化搜索 博弈论

    Alice and Bob Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...

  10. 未能加载文件或程序集“file:///D:/Program Files (x86)/ArcGIS/DeveloperKit10.0/DotNet/ESRI.ArcGIS.3DAnalyst.dll”或它的某一个依赖项。试图加载格式不正确的程序。 行 129,位置 5。

    能加载文件或程序集“file:///C:/Program Files (x86)/ArcGIS/DeveloperKit10.0/DotNet/ESRI.ArcGIS.ADF.Local.dll”或它 ...