使用 Angular 14 的 inject 函数优化对 Ngrx 的使用方式

举报
汪子熙 发表于 2022/11/06 21:21:52 2022/11/06
【摘要】 我们先看 Angular 里一个常规的使用 Ngrx Store 的例子:上面这段代码的缺陷是,Component 作为 UI 的展现层,直接依赖于作为第三方库的 Store API —— 一个合乎逻辑的措施是,将这个逻辑通过 facade 服务的思路,抽取到一个 service 中,以保护 Component 免受库弃用或破坏性更改(breaking changes)的影响。在 Angul...

我们先看 Angular 里一个常规的使用 Ngrx Store 的例子:

上面这段代码的缺陷是,Component 作为 UI 的展现层,直接依赖于作为第三方库的 Store API —— 一个合乎逻辑的措施是,将这个逻辑通过 facade 服务的思路,抽取到一个 service 中,以保护 Component 免受库弃用或破坏性更改(breaking changes)的影响。

在 Angular 14 之前,我们可以将上面的代码进行重构,把 Store 相关的操作,封装到一个 facade service 里:

虽然重构之后代码行数变多了,但是这种设计对 breaking changes 能够应对自如,因为我们现在只需要在一个地方管理代码,即 EntityFacade,而不是重构之前在 Component 里使用 Store 的任何地方。

现在让我们看看 inject() 方式。

有一种观点认为,使用闭包需要将返回的函数存储在 Component 的属性中,这增加了 Component 的复杂性,还不如使用构造函数注入和服务。

到底使用 inject 还是传统的构造函数注入方式,取决于团队制定的编程规范。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。