57react源码研究

一、ReactJS的原理和产生背景(真实DOM和虚拟DOM)
1、所有浏览器的引擎工作流程都大致分5步:创建DOMtree–>创建StyleRules->构建Rendertree->布局Layout–>绘制Painting。
2、用原生api或jQuery每次去操作DOM时,浏览器会从构建DOM树开始从头到尾执行一遍流程。比如在一次操作时,需要更新10个DOM节点,理想状态是一次性构建完DOM树,再执行后续操作。但浏览器没这么智能,收到第一个更新DOM请求后,并不知道后续还有9次更新操作,因此会马上执行流程,最终执行10次流程。显然例如计算DOM节点的坐标值等都是白白浪费性能,可能这次计算完,紧接着的下一个DOM更新请求,这个节点的坐标值就变了,前面的一次计算是无用功。
3、虚拟DOM就是为了解决这个浏览器性能问题而被设计出来的。一次操作中有10次更新DOM的动作,虚拟DOM不会立即操作DOM,而是将这10次更新的diff内容保存到本地的一个js对象中,最终将这个js对象一次性attach到DOM树上,通知浏览器去执行绘制工作,这样可以避免大量的无谓的计算量。

二、React双向绑定
```javascript
var Input = React.createClass({
    getInitialState(){
        return {inputValue:'请输入...'};
    },
    handleChange(event){//2、执行handleChange
        this.setState({inputValue:event.target.value+"改变"});//3、获取value值并赋值给状态inputValue
    },
    render(){
        return (
            <div>
            <input type="text" onChange={this.handleChange} value={this.state.inputValue}/>//1、触发onChange;4、显示inputValue值
    <p>{this.state.inputValue}</p>//4、显示inputValue值
        </div>
    )
    }
});
ReactDOM.render(<Input/>,document.querySelector('#app'));
```
npm目录解说
src:源代码目录 比如coffee,typescript,es6+等代码的目录
lib:转义生成的代码目录,比如babel转义后的es5代码的目录
dist:打包之后的目录
es:es6写法

附:各种版本的发布时间
来源,https://github.com/facebook/react/releases
1、2013年7月3日,react第1版发布,是为0.3.0版本;
2、2015年10月9日,react拆分为react和react-dom两部分,是为0.14.0版本;
3、2016年4月9日,将版本号的第1段移至最后,把原来的第2段版本号放在最前面,是为15.0.0版,上一版本为0.14.8版;
4、2016年4月9日,发布15.0.1版;
5、2016年4月30日,发布15.0.2版;
6、2016年5月21日,发布15.1.0版;
7、2016年7月2日,发布15.2.0版;
8、2016年7月9日,发布15.2.1版;
9、2016年7月30日,发布15.3.0版;
10、2016年8月20日,发布15.3.1版;
11、2016年9月20日,发布15.3.2版;
12、2016年11月16日,发布15.4.0版;
13、2016年11月23日,发布15.4.1版;https://zhuanlan.zhihu.com/p/28697362
14、2017年1月6日,发布15.4.2版;
15、2017年4月7日,发布15.5.0版;
16、2017年4月7日,发布15.5.1版;
17、2017年4月7日,发布15.5.2版;
18、2017年4月7日,发布15.5.3版;
19、2017年4月11日,发布15.5.4版;
20、2017年6月13日,发布15.6.0版;
21、2017年4月14日,发布15.6.1版;
22、2017年9月25日,发布15.6.2版;
23、2017年9月26日,发布16.0.0版;
24、2017年11月9日,发布16.1.0版;
25、2017年11月13日,发布16.1.1版;
26、2017年11月29日,发布16.2.0版;
27、2018年3月29日,发布16.3.0版;
28、2018年4月3日,发布16.3.1版;
至2018年4月9日,共计有60个版本发布。
二、React V0.14版本前后的变化
来源,https://blog.csdn.net/u013451157/article/details/78719374
三、React v15.5.0更新说明
来源,https://zhuanlan.zhihu.com/p/26250968

猜你喜欢

转载自blog.csdn.net/bao13716164418/article/details/91799226
57