IT资讯 Angular 提案考虑将 NgModules 变为可选

norris · 2021-11-02 10:30:05 · 热度: 6

Angular 的开发人员提出了一个 RFC(request for comment) 提案考虑将 NgModules 设为可选。此举旨在将 Angular 转向更简单的重用模型,以改善开发人员体验。

该 RFC 于今年 10 月 8 日发布,预计最迟于 11 月 8 日结束。此 RFC 的目标是与社区一起验证设计,征求对开放问题的反馈,并通过此提案中包含的非生产就绪原型进行实验。

Angular 提案考虑将 NgModules 变为可选

根据介绍,NgModules 是 Angular 的核心概念之一;刚接触 Angular 的开发者在创建哪怕是最简单的"Hello, World"应用程序之前,都需要了解这个概念。更重要的是,NgModules 充当着一个“推理和重用单元”的角色:

  • libraries publish NgModules
  • lazy-loading 是以 NgModule 为中心的,等等

鉴于 NgModule 在 Angular 中的核心作用,很难孤立地对组件、指令和管道进行推理。RFC 指出,在当下的 Angular 中,开发人员使用 NgModule 来管理依赖项。当一个组件需要使用另一个组件、指令、管道或 provider(无论是来自同一应用程序内,还是来自 NPM 上的第三方库)时,都不会直接引用依赖项。而当一个 NgModule 被导入,其中则包含导出的组件、指令和管道以及配置的 providers。因此即使是最简单的“Hello, World”,开发人员都必须创建一个 NgModule 来引导。

RFC 认为,让 Angular 在概念上以 NgModule 为中心会对开发人员体验产生负面影响;并进行了举例论证:

  • 编写组件比编写类或模板更复杂。
  • 围绕加载和渲染的 API 过于复杂且容易被误用。
  • 阅读组件代码不足以理解组件行为。
  • Angular 工具必须处理组件对其 NgModule 上下文的“隐式”依赖关系。

而该提案的好处就在于推动 Angular 向组件、指令和管道发挥更核心作用的方向发展,它们是独立的并且可以安全地直接导入/使用。

  • 简化了 Angular 的 mental model
  • 使新的 API 可以用于使用组件和指令(例如细粒度的延迟加载)
  • 提高了 Angular 工具高效处理代码的能力。

所有这些好处结合起来将使得 Angular 更易于使用、更易于推理、不那么冗长且编译速度更快。

值得注意的是,该提案并不是要从 Angular 中删除 NgModule 的概念,而是让它在典型开发任务中成为可选项。不过 Angular 开发团队也表示,在将来的某个时刻,他们或许也会考虑完全删除 NgModules。

更多详细信息可查看提案

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册