1.ng g component componentName 用于创建一个组件,可以在页面中担当特定可重复的功能组件,也可以挂载在路由上,充当页面展示,这里就不详细介绍使用方法了
2.ng g module moduleName 用于创建一个自定义模块,当项目过于庞大的时候就可以考虑使用module,把每个分支功能都做成一个module方便开发和管理,自定义的module可以对外暴露指定组件,也可以直接挂载在主路由上,实现路由懒加载
//此处创建一个user自定义模块,附带一个路由配置文件,方便直接挂载到主路由
ng g module module/user --routing
- 此时app目录下会得到一个module文件夹,内容如下:
(你可以把这个当成一个简约版的新项目,这里可以创建component,service等)
- 新增组件丰富user模块:userlist,userreset,userscore ,编辑user.module.ts,实现主动暴露内部模块,可以让主程序可以像一般组件一样直接使用
/user.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { UserRoutingModule } from './user-routing.module';
import { UserlistComponent } from './userlist/userlist.component';
import { UserresetComponent } from './userreset/userreset.component';
import { UserscoreComponent } from './userscore/userscore.component';
@NgModule({
declarations: [UserlistComponent, UserresetComponent, UserscoreComponent],
imports: [
CommonModule,
UserRoutingModule
],
exports:[
UserlistComponent, UserresetComponent, UserscoreComponent //主动暴露
]
})
export class UserModule { }
/app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { RouterModule } from '@angular/router'; //引入模块
import { UserModule} from './module/user/user.module'
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule.withServerTransition({ appId: 'serverApp' }),
AppRoutingModule,
RouterModule,
UserModule //注入模块
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
/app.component.html
<p>angular start</p>
<app-userreset></app-userreset> //使用
<router-outlet></router-outlet>
- 编辑user-routing.module.ts路由文件,直接挂载到主路由,实现路由懒加载
///user-routing.module.ts
///编辑模块内部路由
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { UserlistComponent } from './userlist/userlist.component';
import { UserresetComponent } from './userreset/userreset.component';
import { UserscoreComponent } from './userscore/userscore.component';
const routes: Routes = [
{
path:'',
children:[
{
path: 'reset',
component:UserresetComponent
},
{
path: 'score',
component:UserscoreComponent
},
{
path: '',
component:UserlistComponent
}
]
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class UserRoutingModule { }
/app-routing.module.ts
把user模块内部路由挂载在主路由的 /user 路由下面
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [
{
path: 'user',
loadChildren: ()=>import('./module/user/user-routing.module').then(m=>m.UserRoutingModule)
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
/访问/user ,/user/score ,/user/reset 可以查看实现效果