不得不聊聊的react--入门篇
本文为学习笔记,适合入门的童鞋,如有错误,请多多指教。 一、react诞生Web app的性能瓶颈,主要有以下原因。 (1)Web基于DOM,而DOM很慢。浏览器打开网页时,需要解析文档,在内存中生成DOM结构,如果遇到复杂的文档,这个过程是很慢的。可以想象一下,如果网页上有上万个、甚至几十万个形状(不管是图片或CSS),生成DOM需要多久?更不要提与其中某一个形状互动了。 (2)DOM拖慢JavaScript。所有的DOM操作都是同步的,会堵塞浏览器。JavaScript操作DOM时,必须等前一个操作结束,才能执行后一个操作。只要一个操作有卡顿,整个网页就会短暂失去响应。浏览器重绘网页的频率是60FPS(即16毫秒/帧),JavaScript做不到在16毫秒内完成DOM操作,因此产生了跳帧。用户体验上的不流畅、不连贯就源于此。 (3)网页是单线程的。现在的浏览器对于每个网页,只用一个线程处理。所有工作都在这一个线程上完成,包括布局、渲染、JavaScript执行、图像解码等等,怎么可能不慢? (4)网页没有硬件加速。网页都是由CPU处理的,没用GPU进行图形加速。 这里我们看到了dom的问题,下面来学习下react做了哪些事情,就大概清楚为什么react解决了以上问题。 优势:
劣势:
框架建议:REACT+后台直出+前端SPA,后续考虑Service Worker、或者上传到cdn减少后续加载 二、基础React 可以在浏览器运行,也可以在服务器运行; `react.js` 是 React 的核心库 `react-dom.js` 是提供与 DOM 相关的功能 `Browser.js` 的作用是将 JSX 语法转为 JavaScript 语法,此步骤应在服务器完成 监听jsx文件到js自动转化方法:我们都知道react其实是以jsx的方式编码,这就涉及由jsx到js的转化,以下为自动转化方式
[JSX] (http://facebook.github.io/jsx/) 是一个看起来很像 XML 的 JavaScript 语法扩展。React 可以用来做简单的 JSX 句法转换。 重点一:组件ReactDOM.render 是 React 的最基本方法 ReactDOM.render( <h1>Hello,world!</h1>,document.getElementById('example') ); var HelloMessage = React.createClass({ render: function() { return <h1>Hello {this.props.name}</h1>; } }); ReactDOM.render( <HelloMessage name="John" />,document.getElementById('example') ); React 允许将代码封装成组件(component),React.createClass 方法就用于生成一个组件类 注意: 组件并不是真实的 DOM 节点,而是存在于内存之中的一种数据结构,叫做虚拟 DOM (virtual DOM)。只有当它插入文档以后,才会变成真实的 DOM 。根据 React 的设计,所有的 DOM 变动,都先在虚拟 DOM 上发生,然后再将实际发生变动的部分,反映在真实 DOM上,这种算法叫做DOM diff,它可以极大提高网页的性能表现。 重点二:生命周期组件的生命周期分成三个状态:
React 为每个状态都提供了两种处理函数,
此外,React 还提供两种特殊状态的处理函数。
<应用> 重点三:stateReact 的一大创新,就是将组件看成是一个状态机,一开始有一个初始状态,然后用户互动,导致状态变化,从而触发重新渲染 UI。 getInitialState:用于定义初始状态,也就是一个对象 state和props不同:
重点四:react编码过程:
相关链接: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |