【fc-angular】基于angular7的多页面后台管理系统

# 【fc-angular】基于angular7的多页面后台管理系统

<a name="6ddda5c2"></a>

# 一、简介

<a name="9cd0c2c7"></a>

## 项目介绍 

- 基于 angularV7.2.0,ng.ant.design V7.2.0开发的后台管理系统

- 首页

- 路由复用策略,切换路由保留用户操作状态

- 【在线预览】[https://luohong123.github.io/fc-angular/demo/index.html](https://luohong123.github.io/fc-angular/demo/index.html)

- 【源码地址】[https://github.com/luohong123/fc-angular](https://github.com/luohong123/fc-angular)

<a name="f3a1332d"></a>

## 平台功能开发进度

- [x] 登录

- [x] 首页

- [x] layout

- [x] 多tab页路由复用策略

- [x] 退出登录

- [ ] 系统消息

- [ ] 用户管理

- [ ] 菜单管理

- [ ] 权限管理

- [ ] 日志管理

- [x] 引入阿里图标库

- [ ] 清除本地缓存

- [ ] spreadjs报表可视化

- [x] aot打包

<a name="d41d8cd9"></a>

##

<a name="90ff5435"></a>

## 代码目录结构

```markdown

.

├── README.md # 介绍文档

├── _mock # 测试数据

├── angular.json # 工作区中所有项目的默认 CLI 配置,包括 CLI 使用的构建选项、运行选项、测试工具选项(比如 TSLint、Karma、Protractor)等

├── node_modules # 提供给整个工作区的 npm 包

├── package-lock.json # 锁定安装时的包的版本号,并且需要上传到git,以保证其他人在npm install时大家的依赖能保证一致。

├── package.json # 配置用于工作区中所有项目的包依赖项

├── proxy.config.json # 代理

├── src

│   ├── app

│   │   ├── app.README.md # 介绍文档

│   │   ├── app.component.ts

│   │   ├── app.module.ts

│   │   ├── app.route.ts # 根路由

│   │   ├── components # 组件

│   │   ├── service # 服务

│   │   └── share.service.ts              # 单例服务

│   ├── assets # 静态资源文件

│   │   ├── browser # 浏览器

│   │   ├── doc # 文档

│   │   ├── fonts   # 字体图标

│   │   │   ├── ali_iconfont # 阿里图标库

│   │   │   └── antdesign             # antdesign本地图标

│   │   ├── image # 图片资源

│   │   ├── plugin # 第三方插件

│   │   │   └── spread

│   │   ├── styles # 样式文件

│   ├── environments # 环境配置

│   │   ├── environment.51.ts # 其它环境配置

│   │   ├── environment.dev.ts # 开发环境配置

│   │   └── environment.prod.ts # 上线环境配置

│   ├── favicon.ico # 一个用在书签栏上的应用图标

│   ├── fccomponents # 平台组件

│   ├── fccore # 核心模块

│   │   ├── business 

│   │   ├── directive # 指令

│   │   ├── fccore.module.ts # 核心模块

│   │   ├── pipe # 管道

│   │   └── service # 服务

│   │      ├── cache.service.ts # 缓存服务

│   │      ├── common.service.ts # 公共方法

│   │      ├── dao.service.ts # httpClient 前后端通信

│   │      ├── log.service.ts # 打印服务

│   │      ├── message.service.ts  # 消息服务

│   │      └── user.service.ts  # 用户服务

│   ├── feature # 业务代码

│   ├── index.html # 主HTML文件

│   ├── karma.conf.js

│   ├── main.ts # 应用的主入口点,引导应用的根模块 AppModule 来运行在浏览器中

│   ├── polyfills.ts # 为浏览器支持提供腻子脚本

│   ├── shared # 共享模块

│   ├── styles.less # 项目的样式文件

│   ├── test.ts

│   ├── tsconfig.app.json                # 继承自工作区级的 tsconfig.json 文件

│   ├── tsconfig.spec.json

│   └── tslint.json   # 继承自工作区级的 tsconfig.json 文件

├── tsconfig.json # 工作区中所有应用的默认 TypeScript 配置。包括 TypeScript 选项和 Angular 模板编译器选项。

├── tslint.json # 工作区中所有应用的默认 TSLint 配置。

├── .gitignore # 指定 Git 要忽略的非跟踪的文件。

├── .editorconfig # 代码编辑器配置

└── tslint代码检查.READE.md   # 介绍文档

```

<a name="97aab5af"></a>

## package.json介绍

```json

{

  "name": "fc-angular",

  "version": "0.0.0",

  "scripts": {

    "ng": "ng",

    "start": "ng serve --proxy-config proxy.config.json --host=0.0.0.0 --open --port=4200",

    "build": "ng build",

    "test": "ng test",

    "lint": "ng lint",

    "e2e": "ng e2e",

    "aot": "ng build --aot"

  },

  "private": true,

  "dependencies": {

    "@angular/animations": "~7.2.0",

    "@angular/common": "~7.2.0",

    "@angular/compiler": "~7.2.0",

    "@angular/core": "~7.2.0",

    "@angular/forms": "~7.2.0",

    "@angular/platform-browser": "~7.2.0",

    "@angular/platform-browser-dynamic": "~7.2.0",

    "@angular/router": "~7.2.0",

    "@antv/g2": "^3.5.3",

    "@grapecity/spread-excelio": "^12.0.10",

    "@grapecity/spread-sheets": "^12.0.10",

    "@grapecity/spread-sheets-charts": "^12.0.10",

    "@grapecity/spread-sheets-pdf": "^12.0.10",

    "@grapecity/spread-sheets-print": "^12.0.10",

    "@grapecity/spread-sheets-resources-zh": "^12.0.10",

    "ag-grid-community": "^20.2.0",

    "ag-grid-enterprise": "^20.2.0",

    "core-js": "^2.5.4",

    "hammerjs": "^2.0.8",

    "mockjs": "^1.0.1-beta3",

    "ng-zorro-antd": "^7.2.0",

    "rxjs": "~6.3.3",

    "tslib": "^1.9.0",

    "zone.js": "~0.8.26"

  },

  "devDependencies": {

    "@angular-devkit/build-angular": "~0.13.0",

    "@angular/cli": "~7.3.1",

    "@angular/compiler-cli": "~7.2.0",

    "@angular/language-service": "~7.2.0",

    "@types/jasmine": "~2.8.8",

    "@types/jasminewd2": "~2.0.3",

    "@types/node": "^8.9.5",

    "codelyzer": "~4.5.0",

    "jasmine-core": "~2.99.1",

    "jasmine-spec-reporter": "~4.2.1",

    "karma": "~3.1.1",

    "karma-chrome-launcher": "~2.2.0",

    "karma-coverage-istanbul-reporter": "~2.0.1",

    "karma-jasmine": "~1.1.2",

    "karma-jasmine-html-reporter": "^0.2.2",

    "less": "^2.7.3",

    "protractor": "~5.4.0",

    "ts-node": "~7.0.0",

    "tslint": "~5.11.0",

    "typescript": "~3.2.2"

  }

}

```

<a name="5219abb1"></a>

# 二、安装项目

- 在 `git` `node` `npm `  `vscode` 配置好多前提下,克隆代码,命令如下:

```bash

git clone https://github.com/luohong123/fc-angular.git

npm install

npm start

```

```

- 在浏览器中输入 http://localhost:4200

<a name="43752e31"></a>

# 三、开发代码

<a name="98245d55"></a>

## 1. 代码规范

- 请按照angular官网提出的 `风格指南` 开发代码

 【风格指南】[https://angular.cn/guide/styleguide#prevent-re-import-of-the-core-module](https://angular.cn/guide/styleguide#prevent-re-import-of-the-core-module)

<a name="eb85059f"></a>

## 2. 前后端通信

【 使用httpclient】[https://angular.cn/guide/http](https://angular.cn/guide/http)

<a name="f3493286"></a>

## 3. 接口测试

- 推荐使用postman工具

![image.png](https://cdn.nlark.com/yuque/0/2019/png/130738/1555733871020-13db7bac-fa20-451f-8dd8-943dcc62abfb.png#align=left&display=inline&height=339&name=image.png&originHeight=1306&originWidth=2872&size=194842&status=done&width=746)

<a name="5cc07395"></a>

## 4. 路由复用策略代码预览

![image.png](https://cdn.nlark.com/yuque/0/2019/png/130738/1555734163999-1501e30f-9cda-49d4-8bf5-d6f341868d8d.png#align=left&display=inline&height=1854&name=image.png&originHeight=5090&originWidth=2048&size=1271330&status=done&width=746)<br />

<a name="de59c0e7"></a>

## 5. 懒加载路由

![image.png](https://cdn.nlark.com/yuque/0/2019/png/130738/1555734239911-2d8c230a-efdd-4f2d-8399-7fd960f8975c.png#align=left&display=inline&height=942&name=image.png&originHeight=2138&originWidth=1694&size=505657&status=done&width=746)<br />

<a name="09b51d50"></a>

# 四、代码质量检查

<a name="9dae98c0"></a>

## 【代码规范】

1. 每一个文件,如html、css、ts的header都要有作者的名字、描述、作者邮箱、时间、修改时间、修改者等。

1.  文件命名规范

1. ts中一个变量一行注释,每一个方法都要有注释

1. 按照angular官网提供的【风格指南】[链接](https://angular.cn/guide/styleguide) 写代码

<a name="920986da"></a>

## 【tslint代码检查】

<a name="d6c7b62f"></a>

## 【vscode安装插件】

- 在vscode中安装tslint,自动检查代码是否规范,如图:

![image.png](https://cdn.nlark.com/yuque/0/2019/png/130738/1555402709987-cece1997-9eb6-4a91-9a26-951bf0ae22ff.png#align=left&display=inline&height=286&name=image.png&originHeight=572&originWidth=1748&size=139535&status=done&width=874)

- 在vscode中安装koroFileHeader,如图:

![image.png](https://cdn.nlark.com/yuque/0/2019/png/130738/1555465769752-af3a1a2b-59af-4773-abc5-c0b7f1868b4b.png#align=left&display=inline&height=677&name=image.png&originHeight=1354&originWidth=1954&size=297890&status=done&width=977)

- 在vscode中安装代码自动美化工具,如图:

![image.png](https://cdn.nlark.com/yuque/0/2019/png/130738/1555402742578-38d4c998-ea8a-4575-922a-0493b64f17c5.png#align=left&display=inline&height=660&name=image.png&originHeight=1320&originWidth=2052&size=297778&status=done&width=1026)

- angular版本的antDesign代码自动提示工具

![image.png](https://cdn.nlark.com/yuque/0/2019/png/130738/1555404778502-627a5e69-3054-4e7a-8018-3d7d0b3c40a1.png#align=left&display=inline&height=441&name=image.png&originHeight=1154&originWidth=1952&size=205061&status=done&width=746)

- 在vscode中安装Open-In-Browser

- 在vscode中安装 CSS Peek

- 在vscode中安装 Color Info 

- 在vscode中安装快捷键插件 IntelliJ IDEA Keybindings

<a name="435a73ea"></a>

## 【通过aot打包检查代码是否规范】

```bash

ng build --aot

```

<a name="625623da"></a>

# 五、aot打包部署

- 通过   `ng build --aot`  命令生成dist 文件,命令如下:

```bash

ng build --aot

```

<a name="ca97411e"></a>

# 六、学习帮助

【angular官网】[https://angular.cn/docs](https://angular.cn/docs)<br />【typescript官网】[http://www.typescriptlang.org/index.html](http://www.typescriptlang.org/index.html)<br />【ng.ant.design官网】[https://ng.ant.design/docs/introduce/zh](https://ng.ant.design/docs/introduce/zh)

<a name="e8bd9544"></a>

# 七、谢谢大家

感谢大家抽时间阅读我的文章,欢迎指出不对的地方,谢谢! 

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 中文翻译 ng help ng build 构建您的应用程序并将其放入输出路径(dist /默认情况下)。 别名:...
    4ea0af17fd67阅读 2,009评论 0 0
  • core package 概要:Core是所有其他包的基础包.它提供了大部分功能包括metadata,templa...
    LOVE小狼阅读 2,555评论 0 3
  • 写在前面 自身的良好编码风格只能律己,而无法律人;我喜欢 Angular 其中主要一个因素是有一整套的工具及风格指...
    cipchk阅读 851评论 0 3
  • 1.有态度 【有态度的音乐 有态度的音乐人】 2.唱歌顺序 选的歌 唱的怎么样 【运气 智慧 实力】 3.人...
    Me_ly阅读 139评论 0 0
  • 在现在的社会,“免费”可谓是比比皆是。谈到免费,我们最先想到的是那是狡猾的商人用的计策或策略而已。的确,天下没有免...
    PEAK毛毛阅读 1,950评论 0 4