angular使用NG ZORRO来构建博客展示项目(项目结构及路由)

创建项目

使用angular脚手架搭建项目。 如何使用angular脚手架搭建项目参看这篇文章

ng new blog-angular

安装NG ZORRO

我们界面UI选用NG ZORRO。 可以参考官网,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 { }

构建我们的项目文件

根据我自己的需求,现在构建的是一个个人博客系统,很简单,可能就两个页面,一个列表页面,一个详细页面。但是这是我做个人网站的开始,以后还会加上别的其他页面,如个人简历页面,联系页面或者集成别的一些什么。所以,我们至少要按照一个中小型项目来构建目录。 使用如下指令添加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

通过命令很方便的创建模块和组件

创建路由

配置根路由,我们这里用的loadChildren的方式 在routes文件夹下创建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>

效果

源码下载

思考

  • 这章主要写了路由和项目文件的管理。
  • 结合angular的模块化思想,尽量将不同功能的东西分在不同的文件夹中,组成不同的模块。
  • 路由分了跟路由和模块子路由,模块我们使用loadChildren的方式的好处是,不需要引入子模块。以后扩展方便。如果我要以后要扩展blog相关的东西,就只需要在BlogModule中增加相应的组件,然后添加子模块路由即可。如果要扩展和blog模块类似的功能,例如手机端博客,记账webapp等就在跟路由中添加loadChildren。然后像写BlogModule一样写一个子模块就可以了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LinXunFeng的专栏

Xcode8 最快最方便的安装插件方案

11450
来自专栏前端儿

前端代码乱糟糟?是时候引入代码质量检查工具了

为了统一团队的代码规范,除了一纸规范说明之外,还需要引入工具进行限制。虽说工具并不能完全实现规范中的规则,但至少能够在一定程度上缓解代码不统一的局面。

40510
来自专栏王贝珊的专栏

Angular2 :从 beta 到 release4.0 版本升级总结

Angular是用于构建移动应用和桌面Web应用的开发平台.,本文记录Angular2框架升级的一些总结、遇到的问题以及解决办法。

91400
来自专栏小古哥的博客园

gulp的安装和使用

安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 -> 配置gulpfile.js -> 运行任务 1、去nodejs官网安装n...

29850
来自专栏互联网技术杂谈

stderr基础

32260
来自专栏前端开发

VS Code书写vue项目配置 eslint+prettier 统一代码风格

以前公司的vue项目只是我一个人在写,代码风格统一,但是后来随着团队增加,统一的代码风格就越来越重要。我的主力工具是sublime,ws辅助,vscode基本很...

3.7K60
来自专栏小尘哥的专栏

前后端分离Nuxt.js解决SEO问题

背景:由于后端程序猿通常对CSS 、JS掌握不是特别好,通常的开发模式,UI把静态html做好交给程序猿,程序猿开发,把静态html变成动态的时候经常会有各种样...

58840
来自专栏CRPER折腾记

Angular 2 + 折腾记 :(4)初步了解路由及使用

路由就是控制视图与视图之间的跳转,之间还可以传递参数什么的,路由的退后及前进不会完整的请求整个页面,还可以完全不请求(在生命周期里面控制);

10220
来自专栏Felix的技术分享

在macOS 10.12 上编译 Android 5.1

29640
来自专栏lgp20151222

kotlin查看编译后的Java代码

java学一下kotlin,由于用的是同样的jvm,那就说明他们的字节码文件应该是一样的,那么,如果我们能看到编译后的文件,那么学的更快了。

14000

扫码关注云+社区

领取腾讯云代金券