Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >angular使用NG ZORRO来构建博客展示项目(项目结构及路由)

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

作者头像
易兒善
发布于 2018-08-21 07:30:46
发布于 2018-08-21 07:30:46
1.4K00
代码可运行
举报
文章被收录于专栏:挖坑填坑挖坑填坑
运行总次数:0
代码可运行

创建项目

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ng new blog-angular

安装NG ZORRO

我们界面UI选用NG ZORRO。 可以参考官网,https://ng.ant.design/#/docs/angular/getting-started

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd blog-angular
npm install ng-zorro-antd --save

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

app.module.ts

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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个子模块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ng g module core
ng g module layout
ng g module share
ng g module routes

项目目录

通过指令添加布局模块组件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ng g component layout
ng g component layout/header
ng g component layout/footer

通过指令添加博客模块及其组件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ng g module routes/blog
ng g component routes/blog/note-list
ng g component routes/blog/note

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

创建路由

配置根路由,我们这里用的loadChildren的方式 在routes文件夹下创建routes.ts文件并写入如下代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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中修改如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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文件中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<router-outlet></router-outlet>

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<app-header></app-header>
<router-outlet></router-outlet>
<app-footer></app-footer>

效果

源码下载

思考

  • 这章主要写了路由和项目文件的管理。
  • 结合angular的模块化思想,尽量将不同功能的东西分在不同的文件夹中,组成不同的模块。
  • 路由分了跟路由和模块子路由,模块我们使用loadChildren的方式的好处是,不需要引入子模块。以后扩展方便。如果我要以后要扩展blog相关的东西,就只需要在BlogModule中增加相应的组件,然后添加子模块路由即可。如果要扩展和blog模块类似的功能,例如手机端博客,记账webapp等就在跟路由中添加loadChildren。然后像写BlogModule一样写一个子模块就可以了
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.11.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Angular 路由配置(预加载配置,懒加载配置)
(1)RouterModule对象提供了两个静态的方法:forRoot()和forChild()来配置路由信息。
玖柒的小窝
2021/11/04
3.7K0
模块化开发 Angular 应用 [含懒加载]
然后,我们将学习怎么使用我们的模块来启用延迟加载,从而使应用更小,使用户体验更好。
Jimmy_is_jimmy
2022/09/19
3.4K0
模块化开发 Angular 应用 [含懒加载]
Angular Provider 作用域
Services 是每个 Angular 应用程序的基本块之一。Service 是一个普通的 TypeScript 类,它也可以没有使用 @Injectable 装饰器。 比如下面是我们定义一个 UserService 类:
阿宝哥
2019/11/05
2K0
Angular 从入坑到挖坑 - 路由守卫连连看
Angular 入坑记录的笔记第六篇,介绍 Angular 路由模块中关于路由守卫的相关知识点,了解常用到的路由守卫接口,知道如何通过实现路由守卫接口来实现特定的功能需求,以及实现对于特性模块的惰性加载
程序员宇说
2020/06/04
4.4K0
angular 路由使用
创建路由模块 ng generate module app-routing --flat --module=app 修改app-routing.module.ts import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; // 引入路由模块 import { Routes, RouterModule } from '@angular/router'; // 引入被路由的组件 import
路过君
2020/06/19
1.2K0
Angular 工具篇之国际化处理
在日常开发过程中,某些项目会要求支持国际化。对于使用 Angular 框架的项目来说,我们可以利用以下第三方库,快速支持国际化:
阿宝哥
2019/11/05
2.3K0
Angular 6.x 快速入门
在 Angular 中,我们可以通过 Component 装饰器和组件类来创建自定义组件。
阿宝哥
2019/11/05
15.1K0
Angular 结合 NG-ZORRO 快速开发
连更的这几天的文章,我们已经了解了不少 angular 的知识点了,这次我们来个小成品。
Jimmy_is_jimmy
2022/04/15
2.1K0
Angular 结合 NG-ZORRO 快速开发
Angular 2 + 折腾记 :(4)初步了解路由及使用
路由就是控制视图与视图之间的跳转,之间还可以传递参数什么的,路由的退后及前进不会完整的请求整个页面,还可以完全不请求(在生命周期里面控制);
CRPER
2018/08/28
3.3K0
Angular 启用预加载
在使用路由延迟加载中,我们介绍了如何使用模块来拆分应用,在访问到这个模块的时候, Angular 加载这个模块。但这需要一点时间。在用户第一次点击的时候,会有一点延迟。
玖柒的小窝
2021/11/03
1.8K0
Angular 启用预加载
angular 路由懒加载_angular路由
在angular中路由即能加载组件又能加载模块,而我们说的懒加载实际上就是加载模块,目前还没有看到懒加载组件的例子。 加载组件使用的是component关键字 加载模块则是使用loadChildren关键字
全栈程序员站长
2022/11/08
1.5K0
angular2路由预加载
1. 实现PreloadingStrategy 类 import { PreloadingStrategy, Route } from "@angular/router"; import { Observable } from "rxjs"; /** * 预加载策略 */ export class SelectivePreloadingStrategy implements PreloadingStrategy { preload(route: Route, load: Function): O
用户1437675
2018/08/20
1.1K0
🔥【Angular教程】路由入门
路由的概念在前端的框架中得到了广泛的应用,对于路由的感念不做阐述,路由的应用无外乎就是嵌套、传参,高级一些的功能如懒加载、预加载,再高级一些的如:路由守卫等。本篇我们就一起来看一看在Angular中如何使用路由。
前端小鑫同学
2022/12/25
4.8K0
🔥【Angular教程】路由入门
angular使用NG ZORRO来构建博客展示项目(简单实现展示页面)
这两个并没有设计成core模块的组件,但是也放在这里,不知道放在哪里合适。有的可以不用设计成angular模块或者组件,初学者真烦恼
易兒善
2018/08/21
1.9K0
angular使用NG ZORRO来构建博客展示项目(简单实现展示页面)
Angular 从入坑到挖坑 - Router 路由使用入门指北
Angular 入坑记录的笔记第五篇,因为一直在加班的缘故拖了有一个多月,主要是介绍在 Angular 中如何配置路由,完成重定向以及参数传递。至于路由守卫、路由懒加载等“高级”特性,并不会在本篇文章中呈现
程序员宇说
2020/05/19
4.8K0
Angular 快速学习笔记(1) -- 官方示例要点
创建组件 ng generate component heroes {{ hero.name }} {{}}语法绑定数据 管道pipe 格式化数据 <h2>{{ hero.name | uppercase }} Details</h2> [(ngModel)] 双向绑定,form需要引入FormsModule AppModule 放置元数据(metadata) a. @NgModule 装饰器 imports导入外部模块 b. declarations 放置组件 @NgModule({ decl
JadePeng
2018/05/28
4.4K0
Angular2 之 路由与导航基础知识路由模块组件路由路由守卫
最开始的路由,我们是直接写在app.module.ts文件中的,像这样,我们可以实现简单的导航。
贺贺V5
2018/08/21
4K0
Angular学习(01)-架构概览
官方的教程,其实已经很详细且易懂,这里再次梳理的目的在于复习和巩固相关知识点,刚开始接触学习 Angular 的还是建议以官网为主。
请叫我大苏
2019/03/19
4.2K0
Angular学习(01)-架构概览
Angular核心-路由和导航
多页面应用 :一个项目有多个完整的HTML文件,使用超链接跳转–摧毁一颗DOM树,同步请求另一颗,得到之后再重建新的DOM树,不足:DOM树要反复重建,间隔客户端一片空白。 单页面应用 :称为SPA(Single Page Application),整个项目中有且只有一个“完整的”HTML文件,其他的页面都是DIV片段,需要哪个“页面”就将其异步请求下来,“插入”到“完整的”HTML文件中。 ==单页面应用的优势:==整个项目中客户端只需要下载一个HTML页面,创建一个完整的DOM树,页面跳转都是一个DIV替换另一个DIV而已—能够实现过场动画 单页面应用不足:不利于SEO优化
用户9857551
2022/06/30
2.7K0
Angular4记账webApp练手项目之三(在angular4项目中使用路由router)
要使用路由,我们需要在 app.module.ts 模块中,导入 RouterModule 。具体如下:
易兒善
2018/08/21
1.7K0
Angular4记账webApp练手项目之三(在angular4项目中使用路由router)
推荐阅读
相关推荐
Angular 路由配置(预加载配置,懒加载配置)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验