首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该如何将应用程序分解成角模块?

我应该如何将应用程序分解成角模块?
EN

Stack Overflow用户
提问于 2018-02-16 12:23:06
回答 1查看 7.2K关注 0票数 4

场景:我正在重写4个较老的独立SPA应用程序,它代表了一个典型业务流程中使用角5的4个步骤。通常,每个应用程序都由不同的参与者(具有特定角色的用户)使用,但是用户可以有多个角色。

尽管从用户的角度来看,这些应用程序似乎是独立的,但它们共享了许多共同的逻辑,例如后端服务、授权、枚举、常量,甚至一些共享的UI组件。

在新的角版本,我打算有所有的应用程序的共同框架,与初始化,认证和欢迎页面与链接到4个子应用程序。

技术细节是,访问其中一个应用程序的用户不需要下载其他应用程序的代码。然而,在一些应用程序中,也希望有某种延迟加载。

我决定创建一个git存储库和一个make项目。

问题:应该把应用程序分成角模块吗?多么?为什么和后果是什么?

我最初的想法是用欢迎页面创建默认的AppModule。然后是每个应用程序的4个模块,然后是共享逻辑的CommonModule模块。然而,由于我是新手,所以它更多的是基于我的感受而不是专业知识:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-16 12:29:53

我的建议是每个路由有一个模块(例如/step-1 => Module1,/step-2 => Module2,.)以及普通的模块。这样做,您可以延迟加载它们,避免像缓慢加载您的页面(角度延迟加载文档)这样的问题。您关于有一个公共模块的想法是正确的,这样您就可以将它注入到需要它的不同模块上。

更新:路由结构

app.routing.module.ts

代码语言:javascript
复制
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

const routes = [
  {
    path: 'admin',
    loadChildren: 'app/admin/admin.module#AdminModule'
  },
  {
    path: 'players',
    loadChildren: 'app/players/players.module#PlayersModule'
  },
  {
    path: 'teams',
    loadChildren: 'app/teams/teams.module#TeamsModule'
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

players.routing.module

代码语言:javascript
复制
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

import { PlayersComponent } from './players.component';
import { PlayersResolver } from './players.resolver';

const routes = [
  { path: '',
    component: PlayersComponent,
    resolve: {
      standings: PlayersResolver
    }
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule],
  providers: [PlayersResolver]
})
export class PlayersRoutingModule { }

players.module.ts

代码语言:javascript
复制
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import { PlayersComponent } from './players.component';
import { PlayersRoutingModule } from './players.routing.module';
import { PlayersService } from './players.service';

@NgModule({
  imports: [
    CommonModule,
    PlayersRoutingModule
  ],
  declarations: [PlayersComponent],
  providers: [PlayersService]
})
export class PlayersModule { }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48826694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档