創(chuàng)建項(xiàng)目
使用angular腳手架搭建項(xiàng)目。
如何使用angular腳手架搭建項(xiàng)目參看這篇文章
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)建我們的項(xiàng)目文件
根據(jù)我自己的需求,現(xiàn)在構(gòu)建的是一個(gè)個(gè)人博客系統(tǒng)司抱,很簡(jiǎn)單筐眷,可能就兩個(gè)頁(yè)面,一個(gè)列表頁(yè)面习柠,一個(gè)詳細(xì)頁(yè)面匀谣。但是這是我做個(gè)人網(wǎng)站的開始,以后還會(huì)加上別的其他頁(yè)面资溃,如個(gè)人簡(jiǎn)歷頁(yè)面武翎,聯(lián)系頁(yè)面或者集成別的一些什么。所以溶锭,我們至少要按照一個(gè)中小型項(xiàng)目來構(gòu)建目錄宝恶。
使用如下指令添加4個(gè)子模塊
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)建路由
配置根路由,我們這里用的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 }), // 這個(gè)定義在子模塊中垫毙,但是是跟路由霹疫,我們使用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>
源碼下載
思考
- 這章主要寫了路由和項(xiàng)目文件的管理。
- 結(jié)合angular的模塊化思想综芥,盡量將不同功能的東西分在不同的文件夾中更米,組成不同的模塊。
- 路由分了跟路由和模塊子路由毫痕,模塊我們使用loadChildren的方式的好處是征峦,不需要引入子模塊。以后擴(kuò)展方便消请。如果我要以后要擴(kuò)展blog相關(guān)的東西栏笆,就只需要在BlogModule中增加相應(yīng)的組件,然后添加子模塊路由即可臊泰。如果要擴(kuò)展和blog模塊類似的功能蛉加,例如手機(jī)端博客,記賬webapp等就在跟路由中添加loadChildren缸逃。然后像寫B(tài)logModule一樣寫一個(gè)子模塊就可以了