Angular 应用程序中的模块7 Jan 2025 | 7 分钟阅读 什么是 Angular 模块?模块是 Angular 中的一个容器。换句话说,模块是一种组织 pipes、directives、services 和其他组件的方式。因此,Angular 模块只不过是连接的组件、服务、管道和指令的集合。 为什么 Angular 中需要模块?模块化开发是软件开发中最关键的元素之一。好的软件应该始终包含独立的模块。在 Angular 中,您希望构建独立的、物理上封闭的 TypeScript 或 JavaScript 文件,这些文件是自包含的代码。然后,只要您有某种引用机制,就可以从需要使用这些模块的位置引用它们。 我们可以通过使用“import”和“export”关键字来实现这一点。换句话说,需要公开的模块应使用“export”关键字定义,而希望导入已导出模块的模块应使用 import 关键字声明。 注意:本教程将介绍 Angular 框架在创建新应用程序时创建的默认模块,以及如何在 Angular 应用程序中开发和使用您自己的模块。首先,我们将讨论默认模块并尝试理解它。理解 Angular 中的模块正如您在下图中看到的,当我们在 Angular CLI 中使用命令构建一个新的 Angular 项目时,会在 src 文件夹下的 app 文件夹中自动创建一个名为 AppModule(位于 app.module.ts 文件中)的模块。 ![]() 在 Angular 应用程序中,至少需要一个模块。我们 Angular 应用程序的根模块或默认模块称为 AppModule(app.module.ts 文件)。在我们查看如何创建和使用自己的模块之前,让我们花点时间来理解这个默认模块。打开 app.module.ts 文件后,您会发现以下代码。 ![]() 让我们先理解上面的代码模块名称是 AppModule,并使用 @NgModule 装饰器对其进行装饰。@NgModule 是使用 @angular/core Angular 核心库导入的。请查看下图以获得更好的理解。由于 NgModule 前面有 @ 符号,因此在此上下文中我们称之为装饰器。因此,Angular 中任何以 @ 符号开头的东西都应始终被视为装饰器。 ![]() 上面的示例说明了 @NgModule 装饰器如何接收一个带有某些基于数组的属性的对象。它默认带有四个数组:declarations、imports、providers 和 bootstrap。让我们检查 @NgModule 装饰器的每个属性。 Declarations 数组 (declarations)此数组包含 pipes、directives 和 components。每次添加新组件时,都必须先导入它,然后将其引用添加到 declarations 数组中。当您启动新的 Angular 项目时,AppComponent(app.component.ts 文件)会被自动创建。您可以在 src 文件夹下的 app 文件夹中找到此文件。打开 app.component.ts 文件时,会出现以下代码。 ![]() 如上图所示,AppComponent 是组件名称。此外,该组件 (AppComponent) 首先被导入到根模块中,如下图所示,然后将其引用添加到 declarations 数组中。 ![]() Imports 数组 (imports)其他模块(@NgModule 除外)必须包含在 imports 部分。它默认包含 BrowserModule 和 AppRoutingModule。与组件类似,您必须先导入模块,然后将对它们的引用包含在 imports 部分。 Services 数组 (providers)服务必须添加到 providers 部分。每当您为应用程序构建服务时,都必须先在 providers 部分引用它。在此之后,您才能在应用程序中使用该服务。 Bootstrap 数组 (bootstrap)此部分基本上决定了哪个组件将首先在您的 Angular 应用程序中运行或启动。目前,我们有一个组件 AppComponent,它将在我们的程序运行时使用。因此,此 AppComponent 是 bootstrap 数组的一部分。 如何创建 Angular 模块?您必须使用下图所示的命令,以便使用 Angular CLI 在 Angular 中创建模块。在这种情况下,g 代表 generate,并且使用 g 或 generate 来构建模块。 什么时候需要创建多个模块?假设您正在为一个拥有多个门户(包括 HR、Account、Employee 和 Customer)的业务创建一个 ERP 应用程序。随后,您必须为每个门户开发不同的模块,例如员工、账户、HR 等模块。AppModule(app.module.ts 文件)是您应用程序的根模块,因此,每当您创建新组件时,都必须在 @NgModule 装饰器的 declarations 数组中导入它并包含对其的引用。这就是创建单独模块的原因。 如果您要创建成百上千个组件,您将不得不将每个组件导入并包含在根模块 (AppModule) 中,这将变得越来越复杂且难以维护。 为了绕过这种复杂性,您需要为每个门户创建一个模块,并在该模块中包含相关的模块组件。最后,您必须将该模块的引用添加到您的 AppModule 根模块中。您现在可能需要澄清。 模块对于 Angular 应用程序的结构和组织至关重要。它们支持将各种应用程序组件集成到连贯的功能单元的过程。配备 @NgModule() 装饰器的 TypeScript 类被称为 Angular 模块。 Root Module (AppModule)
Feature Modules
Shared Module
Core Module
Routing Modules
当 Angular 应用程序的模块组织得当后,可以更轻松地进行测试、扩展和维护。它鼓励了模块化和可重用性,这是软件开发中的两个基本概念。 结论总之,模块是组织和构建 Angular 应用程序代码的必不可少的构建块。通过使用将相似功能分组到连贯的程序集中的模块,开发人员可以构建可扩展、可维护且可重用的程序。根模块 (AppModule)、功能模块、共享模块、核心模块和路由模块是模块的重要类别。 开发人员通过熟练运用 Angular 的模块框架,可以创建可靠的应用程序,这些应用程序更容易理解、扩展和维护,最终有助于项目的成功。总而言之,模块对于 Angular 应用程序中的代码结构和组织至关重要,因为它们促进了代码的可重用性、可维护性和可扩展性。 下一个主题CRUD 示例 |
我们请求您订阅我们的新闻通讯以获取最新更新。