一、react的重要认知
本人也刚入门react,以下是在自己理解的基础上发表的个人观点,欢迎探讨!
React 起源于 Facebook 的内部项目,意在解决随时间数据不断变化的大规模应用程序开发,react可以表现出应用程序在任何时间点的样子,底层数据改变时,react的虚拟DOM机制会自动重新渲染,更新界面。
这里强调一下Facebook开发React有大公司的痛点,千人开发团队所面临的技术细分与整合是React诞生的原因,模块化,组件化是中大型公司必然要走的路,这种方式对管理带来的优势不言而喻。
React不是一个完整的MVC框架,最多可以认为是MVC中的V(View),做过后台开发的人都知道View其实是视图层,也就是动态可扩展的这一层,React要完成的使命就是让以前大型项目复杂页面可分离,易扩展。
二、React的优势
React的虚拟DOM:React在浏览器端用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的。
组件化:构建可组合的组件(组件:对数据和方法的简单封装,封装起来的具有独立功能的UI部件),是代码复用、测试和关注分离。React推荐以组件的方式去重新思考UI构成,将UI上每一个功能相对独立的模块定义 成组件,然后将小的组件通过组合或者嵌套的方式构成大的组件,最终完成整体UI的构建。
MVC的思想让你做到视图-数据-控制器的分离,那么组件化的思考方式则是带来了UI功能模块之间的分离。
三、Web系统是否选择React
我也是现在站在应用新技术开发的十字路口,下面抛出几种现实的问题,方便大家对号入座。
新项目超过10人协作开发,且有对应的前端,对页面响应速度还是有追求的,那么react的模块化与VDOM必将在后期带来清晰的管理,协作会变的简单,虽然前期会有点疼,但是,革命就需要有付出,经历短暂的痛苦
团队中没有人使用过React,且大家习惯用常规UI框架,并不是互联网化的中大型前端应用,那么对React的使用就看团队leader是否愿意接受它
互联网化的中大型前端应用,那么React是首选,如果团队没有人愿意接受它的设计理念,那就另当别论
后台管理系统对页面的响应速度没有硬性要求,所以如果项目足够大,使用React必将带来清晰的开发思路,如果团队前后端人员基本持平,对软件的整体质量会有很大提升
团队开发web系统没有做前后端分离,那么使用react那就是自找死路,增加开发复杂度,老老实实的用Angular或者JQuery这样全面的框架,搭配UI框架是真理。
以上说这么多,其实就是让大家正在对React做技术选型时,有一个参考,不喜勿喷。