>  기사  >  웹 프론트엔드  >  Angular 루트 모듈 및 기능 모듈에 대한 자세한 설명

Angular 루트 모듈 및 기능 모듈에 대한 자세한 설명

青灯夜游
青灯夜游앞으로
2021-03-24 11:19:541691검색

이 기사에서는 Angular의 기능 템플릿과 루트 템플릿을 안내합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

Angular 루트 모듈 및 기능 모듈에 대한 자세한 설명

Angular cli가 설치되어 있다는 것이 전제입니다. 다음 파일 생성의 대부분은 cliAngular cli,以下的大部分文件创建都是依赖于cli提供的指令

<span style="font-size: 20px;">Angular</span>中的特性模板和根模板(<span style="font-size: 20px;">AppModule</span>)

区别在于特性模板可以把应用划分,个人理解类似于组件化

1、特性模板创建的指令ng g module article ,这里使用的是ng g module article --routing,可以生成一个article-routing.module.ts路由文件

2、此时CLI会在app文件夹下再创建一个文件夹articlearticle文件夹下包含两个文件article.module.tsarticle-routing.module.ts

3、使用ng g component 生成两个组件,指定模板为article,指定的模板会自动导入到article.modules.ts中,并且注册到declarations数组,注意:不要删除declarations中注册的组件,不然会导致组件中部分指定无法使用

  • ng g component 说明
  • ng g component article/article-list -m=article ,在article文件夹下生成article-list文件夹组件
  • ng g component article/article-create -m=article ,在article文件夹下生成article-create文件夹组件

4、article.module.ts 在 CLI 生成的特性模块中,在文件顶部有两个 JavaScript 的导入语句:第一个导入了 NgModule,它像根模块中一样让你能使用 @NgModule 装饰器;第二个导入了 CommonModule,它提供了很多像 ngIfngFor 这样的常用指令。 特性模块导入 CommonModule,而不是 BrowserModule,后者只应该在根模块中导入一次。 CommonModule 只包含常用指令的信息,比如 ngIfngFor,它们在大多数模板中都要用到,而 BrowserModule 为浏览器所做的应用配置只会使用一次。

import { NgModule } from &#39;@angular/core&#39;;
import { CommonModule } from &#39;@angular/common&#39;;

import { ArticleRoutingModule } from &#39;./article-routing.module&#39;;
import { ArticleListComponent } from &#39;./article-list/article-list.component&#39;;
import { ArticleCreateComponent } from &#39;./article-create/article-create.component&#39;;


@NgModule({
  declarations: [ArticleListComponent, ArticleCreateComponent],
  imports: [
    CommonModule,
    ArticleRoutingModule
  ]
})
export class ArticleModule { }

相关推荐:《angular教程

5、article-routing.module.ts ,路由地址嵌套配置,这里的地址设置是因为在app-routing.module根路由模块中已经设置了当前模块的路由前缀为article,因此下面的路由都只用直接设置即可,访问时带上根路由设置的路由前缀。

  • 例如,根路由设置的是article,这里设置的是list,访问地址需要使用article/listAngular 루트 모듈 및 기능 모듈에 대한 자세한 설명
import { NgModule } from '@angular/core'
import { Routes, RouterModule } from '@angular/router'

import { ArticleListComponent } from './article-list/article-list.component'
import { ArticleCreateComponent } from './article-create/article-create.component'
const routes: Routes = [
    {
        path: '',
        children: [
            {
                path: '',
                pathMatch:'full',
                redirectTo: '/article/list'
            },
            {
                path: 'list',
                component: ArticleListComponent
            },
            {
                path: 'create',
                component: ArticleCreateComponent
            }
        ]
    }
]
@NgModule({
    imports: [RouterModule.forChild(routes)],
    exports: [RouterModule]
})
export class ArticleRoutingModule {}

6、根模块app.mudles.ts,导入app-routing.module文件,可以配置全局的路由

import { HttpClientModule } from '@angular/common/http';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { BrowserModule } from '@angular/platform-browser';
import { AppRoutingModule } from './app-routing.module'

import { AppComponent } from './app.component';
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpClientModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

7、根模块的路由app-routing.module.ts loadChildren是使用了惰性加载特性模块 默认情况下,NgModule都是急性加载的,也就是说它会在应用加载时尽快加载,所有模块都是如此,无论是否立即要用。对于带有很多路由的大型应用,考虑使用惰性加载 —— 一种按需加载 NgModule的模式。惰性加载可以减小初始包的尺寸,从而减少加载时间。

import { NgModule } from '@angular/core'
import { Routes, RouterModule } from '@angular/router'
import { LoginComponent } from './login/login.component'
const routes: Routes = [
    { path: 'login', component: LoginComponent },
    {
        path: 'article',
        loadChildren: () => import('./article/article.module').then((m) => m.ArticleModule)
    }
]

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

8、最后如果想要访问article下面的listcreate路由在浏览器输入地址article/list

  • article/list

    Angular 루트 모듈 및 기능 모듈에 대한 자세한 설명

  • 或者article/create

    에서 제공하는 지침에 의존합니다. code ><span style="font-size: 20px;">Angular</span>속성 템플릿 및 루트 템플릿( <span style="font-size: 20px;">AppModule</span>)Angular 루트 모듈 및 기능 모듈에 대한 자세한 설명

  • 차이점은 기능 템플릿은 애플리케이션을 나눌 수 있습니다. 제 개인적인 이해는 구성 요소화와 유사합니다

1. 기능 템플릿을 만드는 방법은 ng g 모듈 기사입니다. -routing을 사용하면 article-routing.module.ts 라우팅 파일2을 생성할 수 있습니다. 이때 CLIapp 폴더 아래에 article 폴더를 하나 더 만듭니다. article 폴더에는 article.module.ts 두 파일이 포함되어 있습니다. Article- Routing.module.ts

🎜3. ng g 컴포넌트를 사용하여 두 개의 컴포넌트를 생성하고 템플릿을 article로 지정하면 지정된 템플릿이 됩니다. 자동으로 article.modules.ts로 가져와 선언 배열에 등록합니다. 🎜참고: 선언에 등록된 구성 요소를 삭제하지 마세요. 그렇지 않으면 구성 요소에서 부분 지정이 발생합니다. Unable to use🎜

위 내용은 Angular 루트 모듈 및 기능 모듈에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제