• 关于react和Angular的思考


          最近react在github上大有赶超 angular的趋势,不得不说前端技术真是日新月异,比起 java c# php等老牌后端语言来说,javascript库的生命周期正在不断的被缩短和别挑战,距离angular发布至今也不过几年的时间,着实让人感叹。

      网上一直有人试图拿react与angular作比较,就好比拿facebook和google作比较,两者虽然同样知名,不过显然不是一回事。

      就我个人的感触而言,react无疑是一种ui组件化的解决方案,从设计思路上react和目前还是草案的webComponent显然并不相同,说起webComponent就得提大改特改的angular2.0,虽然angular团队声称,angular2 使用typescript并不是必须的,但从官网上的迅速上手看,并非如此,估计angular2.0未能获得如angular那样极大的反响,和不能直接使用javascript有相当的关系。尤其是typescript的模块系统,虽说语法和es6一样,但实际上却必须使用ts自家的包管理库,微软的东西就是这么蛋疼。相较于react,webCp显然还不能算是一种解决方案,至少在封装ui组件上还远远不够,无论是shadowdom 还是import template 以及自定义标签,元素有了,但是却没有一套将其整合的方案。虽然fb的flux并不那么让人接受,这不是单向数据流的错,而是相比mvc的思想而言 flux显然蛋疼的紧。不过react却着实是个好东西,它关于细粒度的组件理念,是真正把ui当成积木来玩了,react出来之前,我就有想法开发一个库,能够让ui跟玩积木一样还取了个名字叫toy,不过咳显然事实证明这并非易事。

      对比angular,我觉得react正如官方所言的是一个 viewControl 而不是单纯的view,对比时下热门的vm或许我们该称之为vc,加上state,抛开数据源的话,react构造的每个组件都是一个,我们姑且称为scv,state-control-view,通过状态来控制视图的变化,而数据源则只负责更新状态,避免了view和modal之间的数据流动。react将每一个组件都作为Component类的子类来看待,通过简单的组合就能保持多样的变化,从本质上讲,state和angular的scope并没有啥不同,都是一种状态管理的对象,不过react区分了props和state 而scope显然是一个混合体不仅是props还是state有时候甚至是modal。这导致了指令系统的一个根本性缺陷,那就是随着开发的推进,越来越不能被分离,angular另外一个大问题就是依赖注入,ioc本身应该是个不错的好东西,这也是angular出来时的一大特色,不过因为javascript本身缺少模块功能,这种依赖注入反而成了问题,对于一个大型应用,因为进度等问题,开发完成后,往往会产生庞大的js文件群,而指令,控制器,服务的相互依赖导致了项目的可拆封性就变得很差,想要重用一个指令,最后发现会引入一大堆的服务和控制器,当然最主要的是,指令显然是angular的bootstrap启动之后才能用的玩意。angular剥夺了指令的渲染权,也导致了指令的使用远不如react组件的灵活。所以angular更适合开发具有一定标准性的应用,譬如管理系统,各种管理系统,后台,前台等等。最后被人诟病的自然是angular的双向绑定了,这玩意就是个双刃剑,现在开来,对于react来说仅仅是省了一句setState,同样是组件的更新权,在react中你通过this.state来改变其属性的值并不会出发ui的重新渲染,只有调用setState方法才行,而angular的scope动一动就变一变,两者对比,react释放了组件更新的权利,而angular则是将其自动化,目前看来前者的做法显然更有益。

  • 相关阅读:
    SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSAS 系列
    微软BI 之SSRS 系列
    微软BI 之SSRS 系列
    配置 SQL Server Email 发送以及 Job 的 Notification通知功能
  • 原文地址:https://www.cnblogs.com/jackyKin/p/4734681.html
Copyright © 2020-2023  润新知