React技术栈之为什么选择react
React技术栈之为什么选择react,React起源于Facebook公司的内容项目,该公司在尝试用H5来建设Instagram网站的过程中发现,对于复杂前端h5性能下降明显,在对市场的mvc框架分析后,依然无法找到满足自己需求的框架,于是决定自己开发一套,于是就有了之后的React,React于2013年开发完成后被开源,一经发布迅速吸引了广泛的关注。
React的设计思想极其独特,其核心理念-虚拟Dom思想也在陆续被其他优秀框架引入,如Angular2,同时React性能优秀,代码逻辑简单,适用面广,又能用于移动端开发的React Native,受到越来越多人的认可和使用
在web开发中,我们通常面临的是动态的页面,随着用户的交互或与服务端的交互会产生的数据的变化,而数据的变化又会得的我们需要展示的内容有所变化, 以往我们是通过操作Dom元素予以调整来解决的,但频繁或复杂的DOM操作通常对性能会产生较大的影响,针对这一问题,React引入了虚拟DOM机制:由用户构建虚拟DOM,React负责将虚拟DOM渲染到浏览器中,虚拟DOM的核心思想可以概括成以下两点:
提供一种更方便简洁的方式操作DOM,提升开发效率以前我们需要直接操作DOM,操作种类繁多,写法复杂,而在React中可以用一个js对象来表示DOM结构,甚至一个组件,这个js对象可以是通过React的createElement方法,或者React的组件的构造函数来创建的,便捷易懂。
保证最小化的DOM操作,保证执行效率,提升性能使用js对象来表示DOM结构后,我们可以将js对象构造出的DOM结构树叫做虚拟DOM树,当页面发生数据变化而需要操作DOM节点时,会先扫描整个虚拟DOM树,通过比较本次与上次虚拟DOM的具体差异,然后针对实际需要变化的部分进行实际的浏览器的DOM更新。虚拟DOM存的是内存数据,计算虚拟DOM的差异带来的内存的消耗通常要远远小于多余的DOM操作的开销,所以这里选择增加一部分比较,来减小DOM渲染的开销,从而提升性能。
在保证性能的同时,用户无需关心具体某个DOM应该作何操作,而只需关系数据状态,以及相应的数据状态应该如何渲染到一个组件,除此之外的其他工作都由REACT高效自动的完成。
跨平台由于我们主要的操作对象是虚拟DOM,而无关实际的执行环境,如是否是浏览器,或浏览器的类型,所以只要有虚拟DOM到真实DOM的转换器,就可以实现真实DOM的最终呈现,从而达到跨平台的效果。如,从虚拟DOM到浏览器真实DOM的转换通过react-dom实现,从虚拟DOM到移动APP的转换工具通过react-native实现。