Какие типы функциональных модулей существуют в Angular?
В Angular функциональные модули (feature modules) — это важная часть архитектуры приложения, которые позволяют организовать код в логические блоки. Они помогают разделять различные функциональности приложения, упрощая его масштабирование и поддержку. Давайте разберем, какие существуют типы функциональных модулей и в чем их особенности.
Основные типы функциональных модулей
Пример:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { CustomComponent } from './custom.component';
import { CustomDirective } from './custom.directive';
import { CustomPipe } from './custom.pipe';
@NgModule({
declarations: [CustomComponent, CustomDirective, CustomPipe],
imports: [CommonModule],
exports: [CustomComponent, CustomDirective, CustomPipe]
})
export class SharedModule {}
Пример:
import { NgModule, Optional, SkipSelf } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { AppService } from './app.service';
@NgModule({
imports: [HttpClientModule],
providers: [AppService],
exports: []
})
export class CoreModule {
constructor(@Optional() @SkipSelf() parentModule: CoreModule) {
if (parentModule) {
throw new Error('CoreModule должен быть загружен только в AppModule');
}
}
}
Пример:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ProductsComponent } from './products.component';
import { ProductsRoutingModule } from './products-routing.module';
@NgModule({
declarations: [ProductsComponent],
imports: [CommonModule, ProductsRoutingModule]
})
export class ProductsModule {}
Пример настройки маршрутов с ленивой загрузкой:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [
{
path: 'products',
loadChildren: () =>
import('./products/products.module').then((m) => m.ProductsModule)
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {}
Заключение
Функциональные модули в Angular позволяют эффективно управлять кодом приложения, упрощая его структуру и поддержку. Правильное использование общих, ядровых, функциональных и лениво загружаемых модулей поможет новичкам создать гибкое и масштабируемое приложение.