Паттерны конфигурации Angular Router: модуль маршрутизатора и маршруты const - PullRequest
0 голосов
/ 20 сентября 2019

Я только что говорил с рабочим колледжем о том, как организовать конфигурацию маршрутизации функций.

Мы обсудили два подхода.

Подход 1: отдельный модуль маршрутизации

Первый подход заключается в создании отдельного feature-a-routing.module.ts, который содержит все компоненты маршрутизации, и импорта его в FeatureAModule:

// feature-a-routing.module.ts
const routes: Routes = [
    {
        path: '/',
        component: HelloComponent,
    }
];

@NgModule({
    imports: [RouterModule.forChild(routes)],
    exports: [RouterModule]
})
export class FeatureARoutingModule {}
// feature-a.module.ts
@NgModule({
    declarations: [
        HelloComponent,
        NeugeschaeftContainerComponent,
        ProduktauswahlNeugeschaeftComponent
    ],
    providers: [],
    imports: [CommonModule, FeatureARoutingModule]
})
export class FeatureAModule {}

Подход 2: константа отдельных маршрутов

Второй подход заключается в определении константы routes только в отдельном файле:

// feature-a-routes.ts
export const featureARoutes: Routes = [
    {
        path: '/',
        component: HelloComponent,
    }
];
// feature-a.module.ts
@NgModule({
    declarations: [
        HelloComponent,
        NeugeschaeftContainerComponent,
        ProduktauswahlNeugeschaeftComponent
    ],
    providers: [],
    imports: [CommonModule, RouterModule.forChild(featureARoutes)]
})
export class FeatureAModule {}

Дискуссия

Первый подход, как представляется, имеет лучшее разделение интересов.Какую единственную разницу я вижу.Есть ли какие-либо другие преимущества этого первого подхода, возможно, в отношении тестирования, оптимизации или есть даже предостережения?И каковы будут преимущества второго подхода?

1 Ответ

0 голосов
/ 20 сентября 2019

За исключением того, что первый подход был помечен как хорошая практика, поскольку модуль NgModule является одной из основных функций Angular, выбирать его в такой ситуации вообще не имеет смысла.Это рождено от соглашения.

Я предпочитаю второй подход для удобочитаемости, поскольку модуль бесполезен (просто импортирует материал для его экспорта.).

...