angular使用NG ZORRO來構(gòu)建博客展示項目(項目結(jié)構(gòu)及路由)

返回目錄

創(chuàng)建項目

使用angular腳手架搭建項目。
如何使用angular腳手架搭建項目參看這篇文章

ng new blog-angular

安裝NG ZORRO

我們界面UI選用NG ZORRO。
可以參考官網(wǎng),https://ng.ant.design/#/docs/angular/getting-started

cd blog-angular
npm install ng-zorro-antd --save

在根 module 中需要使用 NgZorroAntdModule.forRoot()

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { NgZorroAntdModule } from 'ng-zorro-antd';

import { AppComponent } from './app.component';


@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    NgZorroAntdModule.forRoot()
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

構(gòu)建我們的項目文件

根據(jù)我自己的需求,現(xiàn)在構(gòu)建的是一個個人博客系統(tǒng),很簡單,可能就兩個頁面,一個列表頁面,一個詳細頁面。但是這是我做個人網(wǎng)站的開始,以后還會加上別的其他頁面,如個人簡歷頁面,聯(lián)系頁面或者集成別的一些什么。所以,我們至少要按照一個中小型項目來構(gòu)建目錄。
使用如下指令添加4個子模塊

ng g module core
ng g module layout
ng g module share
ng g module routes
項目目錄

通過指令添加布局模塊組件

ng g component layout
ng g component layout/header
ng g component layout/footer

通過指令添加博客模塊及其組件

ng g module routes/blog
ng g component routes/blog/note-list
ng g component routes/blog/note

通過命令很方便的創(chuàng)建模塊和組件

創(chuàng)建路由

配置根路由,我們這里用的loadChildren的方式
在routes文件夾下創(chuàng)建routes.ts文件并寫入如下代碼

import {LayoutComponent} from "../layout/layout.component"

export const routes = [
  {
    path: '',
    component: LayoutComponent,
    children: [
      { path: '', redirectTo: 'blog', pathMatch: 'full' },
      { path: 'blog', loadChildren: './blog/blog.module#BlogModule'},
    ]
  },
  { path: '**', redirectTo: 'blog' }
];

注入路由,修改routes.module.ts如下:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import {routes} from "./routes"

import {LayoutModule} from "../layout/layout.module"

@NgModule({
  imports: [
    CommonModule,
    LayoutModule,
    RouterModule.forRoot(routes, { useHash: true }), // 這個定義在子模塊中,但是是跟路由,我們使用forRoot
  ],
  declarations: []
})
export class RoutesModule { }

在app.module.ts中引入RoutesModule

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { NgZorroAntdModule } from 'ng-zorro-antd';
import { RouterModule } from '@angular/router';

import { AppComponent } from './app.component';
import {RoutesModule} from "./routes/routes.module"


@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    RouterModule,
    BrowserModule,
    NgZorroAntdModule.forRoot(),
    RoutesModule,
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

配置子模塊路由
在blog.module.ts中修改如下

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { NoteListComponent } from './note-list/note-list.component';
import { NoteComponent } from './note/note.component';
import { Routes, RouterModule } from '@angular/router';

// 定義的路由
const routes: Routes = [
  { path: '', redirectTo: 'list' },
  { path: 'list', component: NoteListComponent },
  { path: 'note/:id', component: NoteComponent }
];

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forChild(routes), // 子模塊注入路由要用forChild
  ],
  // 路由中使用了的component要在這里declaration
  declarations: [NoteListComponent, NoteComponent]
})
export class BlogModule { }

路由出口router-outlet
跟路由的出口在app.component.html文件中

<router-outlet></router-outlet>

博客子模塊的路由出口在layout.component.html文件中

<app-header></app-header>
<router-outlet></router-outlet>
<app-footer></app-footer>

效果

源碼下載

思考

  • 這章主要寫了路由和項目文件的管理。
  • 結(jié)合angular的模塊化思想,盡量將不同功能的東西分在不同的文件夾中,組成不同的模塊。
  • 路由分了跟路由和模塊子路由,模塊我們使用loadChildren的方式的好處是,不需要引入子模塊。以后擴展方便。如果我要以后要擴展blog相關(guān)的東西,就只需要在BlogModule中增加相應的組件,然后添加子模塊路由即可。如果要擴展和blog模塊類似的功能,例如手機端博客,記賬webapp等就在跟路由中添加loadChildren。然后像寫B(tài)logModule一樣寫一個子模塊就可以了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容