【React】初识React
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的更多相关文章
- React 初识
React We built React to solve one problem: building large applications with data that changes over t ...
- React初识整理(五)--Redux和Flux(解决状态传递问题)
Flux 1.引入:在React的应⽤中,状态管理是⼀个⾮常重要的⼯作.我们不会直接对DOM节点进⾏操作,⽽是通过将数据设置给state,由state来同步UI,这种⽅式有个潜在的问题,每个组件都有独 ...
- React初识整理(四)--React Router(路由)
官网:https://reacttraining.com/react-router 后端路由:主要做路径和方法的匹配,从而从后台获取相应的数据 前端路由:用于路径和组件的匹配,从而实现组件的切换. 如 ...
- 前端笔记之React(一)初识React&组件&JSX语法
一.React项目起步配置 官网:https://reactjs.org/ 文档:https://reactjs.org/docs/hello-world.html 中文:http://react.c ...
- React学习笔记-1-什么是react,react环境搭建以及第一个react实例
什么是react?react的官方网站:https://facebook.github.io/react/下图这个就是就是react的标志,非常巧合的是他和我们的github的编辑器Atom非常相似. ...
- 小谈React、React Native、React Web
React有三个东西,React JS 前端Web框架,React Native 移动终端Hybrid框架,React Web是一个源码转换工具(React Native 转 Web,并之所以特别提出 ...
- React的React Native
React的React Native React无疑是今年最火的前端框架,github上的star直逼30,000,基于React的React Native的star也直逼20,000.有了React ...
- React Navigation & React Native & React Native Navigation
React Navigation & React Native & React Native Navigation React Navigation https://facebook. ...
- 重谈react优势——react技术栈回顾
react刚刚推出的时候,讲react优势搜索结果是几十页. 现在,react已经慢慢退火,该用用react技术栈的已经使用上,填过多少坑,加过多少班,血泪控诉也不下千文. 今天,再谈一遍react优 ...
- React 与 React Native 底层共识:React 是什么
此系列文章将整合我的 React 视频教程与 React Native 书籍中的精华部分,给大家介绍 React 与 React Native 结合学习的方法,此小节主要介绍 React 的底层原理与 ...
随机推荐
- EOJ 3261 分词
字典树,$dp$. 记录$dp[i]$为以$i$为结尾获得的最大价值.枚举结尾一段是哪个单词,更新最大值.可以将字典中单词倒着建一棵字典树. 这题数据有点不严谨. 下面这组数据答案应该是负的. 3 a ...
- Java多线程编程——生产者-消费者模式(1)
生产者-消费者模式在生活中非常常见.就拿我们去餐馆吃饭为例.我们会遇到以下两种情况: 1.厨师-客人 如下图所示,生产者.消费者直接进行交互. 生产者生产出产品后,通知消费者:消费者消费后,通知生产者 ...
- Latex 学习之旅
学习资料 A simple guide to LaTeX - Step by Step LaTeX WikiBook LaTeX 科技排版 TeXdoc Online (TeX and LaTeX d ...
- Mac 命令行美化
在 mac 中使用原生的命令行工具,竟然没有 git 命令的自动补全,在 git 仓库下也看不到当前的分支名,不能忍.于是,开始一波改造. 目标:命名 Tab 自动补全:可以显示分支名: 一番 Goo ...
- Struts2 MVC基础介绍
流程介绍 我们模拟一个请求/响应的情景,来介绍Struts的工作流程.注意,下面的序号和图中的序号没有严格的对应关系. 浏览器向系统发出请求,请求的地址是ac.action 请求被StrutsPrep ...
- Contains,Exists,Any,Count 比较是否存在某个元素
private static void Main(string[] args) { ; Console.WriteLine("判断是否存在某个元素 :"); Console.Wri ...
- 「SCOI2016」美味
「SCOI2016」美味 题目描述 一家餐厅有 \(n\) 道菜,编号 \(1 \ldots n\) ,大家对第 \(i\) 道菜的评价值为 \(a_i \:( 1 \leq i \leq n )\) ...
- BZOJ3238 [Ahoi2013]差异 SA+单调栈
题面 戳这里 题解 考虑把要求的那个东西拆开算,前面一个东西像想怎么算怎么算,后面那个东西在建出\(height\)数组后相当于是求所有区间\(min\)的和*2,单调栈维护一波即可. #includ ...
- Codeforces Round #304 (Div. 2) B. Soldier and Badges 水题
B. Soldier and Badges Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/54 ...
- 为什么要使用netty
选择Netty的理由在开始本节之前,我先讲一个亲身经历的故事:曾经有两个项目组同时用到了NIO编程技术,一个项目组选择自己开发NIO服务端,直接使用JDK原生的API,结果2个多月过去了,他们的NIO ...