You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
这次做的 Angular 项目,面向对象的属性较重(几个险种有不同的加总逻辑有相同的逻辑、依赖于其他的数据),用这种数据驱动的方式就导致所有计算逻辑都放在组件或 service 里,抽象能力不够。也是因此突然发现,当你尝试抽象「数据」和「基于数据的行为」到一起时,它就自然地是「面向对象」了。我们不应该主张「一切皆对象」,而是在应用明显呈现出大量「基于数据其上的行为操作」特征时,想到面向对象提供了一种合理的抽象和模块化的方案,它符合我们对优秀软件的一些想象(SOLID)。
Angular 好坏都很明显,强处在于
后几者对于本来就岌岌可危的前端重构和单元测试是一大助力。
弱点在于:
模板这个问题可以认为这是在模板设计思路上 React 的编程式和 Angular/Vue 的 template 式模式的差异;后一个这个事情,就导致你的 controller 各种 parse 数据、存 component 变量、给 view 使用,从「模块化」的角度讲,组件内部是高内聚的, 但东西依然被拆成
component.ts
和component.html
两个文件,导致业务代码之间关联性差,缺乏抽象。React 由于抽组件更容易,配合 selector 使用部分地解决了这个问题;Vue 通过filter
computed
等内置的语法特性部分地解决了这个问题。总体来说,感觉都比 Angular 要轻量、优雅一些。这次做的 Angular 项目,面向对象的属性较重(几个险种有不同的加总逻辑有相同的逻辑、依赖于其他的数据),用这种数据驱动的方式就导致所有计算逻辑都放在组件或 service 里,抽象能力不够。也是因此突然发现,当你尝试抽象「数据」和「基于数据的行为」到一起时,它就自然地是「面向对象」了。我们不应该主张「一切皆对象」,而是在应用明显呈现出大量「基于数据其上的行为操作」特征时,想到面向对象提供了一种合理的抽象和模块化的方案,它符合我们对优秀软件的一些想象(SOLID)。
槽点
模板没有 early return,看得人脑疼。
React 里,通过编程方式,可以将异常的、空的逻辑直接返回断掉,从而使
render
逻辑分块,便于阅读:没有评论的话,就返回空,不用再往下读了;有评论的话,就渲染。在模板型 view 里,由于不能编程,只能这样写👇。你就发现,上下本来是独立的逻辑,现在「联系」到一起了,
comment.length
的逻辑其实重复了一遍,你得反应一下才知道「哦,这两个条件是互斥的,显示其中一个就不显示另外一个」。模板规模再大一点(这很有可能,考虑到 Angular 实质上不鼓励模板抽取这种方式),你整个模板都得看完才能理解它的渲染方式。The text was updated successfully, but these errors were encountered: