Ng-Alain

Ng-Alian 是基于 Antd 实现的一个前端框架。它基于 AngularNG-ZORRO,在此基础上进行进一步封装,是中后台的前端解决方案,为我们提供更多通用性业务模块,让我们更加专注于业务。

在前后端分离开发的场景中,可能已经约定好了数据结构,API 具体的业务逻辑还没写,前端开发常常会使用到假数据,来保证前端开发不会受阻。等到 API 定义好后才真实的发起请求。

假数据可以实现一些测试的能力,例如“页面格式问题测试”,“边界测试”,“错误返回测试”等。

Mock 数据是模拟数据,假数据。

Ng-Alain Mock

Ng-Alain Mock 解决了一些痛点,无疑是使用 Ng-Alain 框架使用得最频繁的功能之一了。

Ng-Alain Mock 支持 GET(如获取列表详情)、POST(如新增项目)、PUT(如修改项目)、DELETE(如删除项目)请求

只需要简单的配置,就可以实现模拟请求,并返回数据。但是它不会真的发起 Http 请求。

Angular 项目中使用 Ng-Alain Mock

要使用 Ng-Alain 首先需要先安装依赖包。

  1. 安装 Mock 依赖包,参见官网安装方法

  2. 在项目根目录下新建 _mock 目录,新建 task.ts 填充假数据,新建 index.ts 文件用来导出模拟数据文件,并导出 task.ts

_task.ts

export const TASK = {
'GET /tasks': [
{
create_time: '2019-12-10 17:54:53',
desc: 'test-1',
id: 1,
last_update_time: '2019-12-10 17:54:53',
task_name: 'test-1'
},
{
create_time: '2019-12-10 17:55:53',
desc: 'test-2',
id: 2,
last_update_time: '2019-12-10 17:55:53',
task_name: 'test-2'
}
],
'/tasks/1': {
create_time: '2019-12-10 17:54:53',
desc: 'test-1',
id: 1,
last_update_time: '2019-12-10 17:54:53',
task_name: 'test-1'
},
'POST /tasks': {
message: '任务创建成功'
},
'PUT /tasks/1': {
message: '任务修改成功'
},
'DELETE /tasks/1': {
message: '任务删除成功'
},
};
  1. 新建 task 组件用于测试。组件关键代码:
<div>
<nz-card nzTitle="任务管理">
<nz-row [nzGutter]="8">
<button nz-button (click)="createMock()" [nzType]="'primary'">
<i class="anticon anticon-plus"></i>模拟新建任务
</button>
</nz-row>
</nz-card> <nz-card>
<nz-table
#nzTable
nzShowSizeChanger
[nzData]="_dataSet"
>
<thead>
<tr>
<th>任务ID</th>
<th>任务名称</th>
<th>备注说明</th>
<th>更新时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of nzTable.data">
<td>{{ item.id }}</td>
<td>{{ item.task_name }}</td>
<td>{{ item.desc }}</td>
<td>{{ item.last_update_time }}</td>
<td>
<a (click)="viewMock(item)">模拟查看任务详情</a>
<nz-divider nzType="vertical"></nz-divider>
<a (click)="editMock(item)">模拟编辑任务</a>
<nz-divider nzType="vertical"></nz-divider>
<a nz-popconfirm nzTitle="是否删除该任务?" (nzOnConfirm)="deleteMock(item)"
>模拟删除任务</a
>
</td>
</tr>
</tbody>
</nz-table>
</nz-card>
</div>
  1. task 组件中从 @delon/theme 中 导入 _HttpClient 服务。
import { _HttpClient } from '@delon/theme';

并将服务注入。

  ngOnInit() {
this.getMocks();
} getMocks() {
this._http.get('/tasks').subscribe(
res => {
this._dataSet = res;
},
error => {
this.msg.error('获取模拟任务列表失败');
}
);
} createMock() {
this._http.post('/tasks').subscribe(
res => {
this.msg.success(res.message);
},
error => {
this.msg.error('新建模拟任务失败');
}
);
} viewMock(item) {
const viewModal = this.modalService.create({
nzTitle: `查看任务"${item.task_name}"详情`,
nzComponentParams: {
item: item,
},
nzContent: ViewComponent
});
} editMock(item) {
this._http.put(`/tasks/${item.id}`).subscribe(
res => {
this.msg.success(res.message);
},
error => {
this.msg.error('编辑模拟任务失败');
}
);
} deleteMock(item) {
this._http.delete(`/tasks/${item.id}`).subscribe(
res => {
this.msg.success(res.message);
},
error => {
this.msg.error('删除模拟任务失败');
}
);
}

  1. 测试

以点击"模拟新建任务"按钮为例,浏览器 network 中没有发起请求,console 控制台有 'POST /tasks' 的请求和响应信息。

这样,我们就没有真的发起 http 请求,也实现了业务逻辑。如果数据结构按照约定的规范编写,等到 API 准备好了,注释掉 _mock 目录下 index.ts 导出的 _task.ts 文件即可,发起真正的请求。

Ng-Alain-mock 运用的更多相关文章

  1. Ng Alain使用 - cli和克隆两种方式

    感觉没啥要写的,但是在查看相关资料的过程中发现不少浮夸的人,可以说是完全不阅读官方文档,操作完全无厘头,,创建了删,配置,再删除,,,扯蛋....., 方式一:CLI(推荐) # 确保使用的是最新版本 ...

  2. Angular 中后台前端解决方案 - Ng Alain 介绍

    背景 之前项目使用过vue.js+iview,习惯了后端开发的我,总觉得使用不习惯,之前分析易企秀前端代码,接触到了angular js,完备的相关功能,类似后端开发的体验,让人耳目一新,全新的ang ...

  3. .Net Core应用框架Util介绍(二)

    Util的开源地址 https://github.com/dotnetcore/util Util的开源协议 Util以MIT协议开源,这是目前最宽松的开源协议,你不仅可以用于商业项目,还能把Util ...

  4. 如何用ABP框架快速完成项目(6) - 用ABP一个人快速完成项目(2) - 使用多个成熟控件框架

    正如我在<office365的开发者训练营,免费,在微软广州举办>课程里面所讲的, 站在巨人的肩膀上的其中一项就是, 尽量使用别人成熟的框架. 其中也包括了控件框架   abp和52abp ...

  5. 基于spring security 实现前后端分离项目权限控制

    前后端分离的项目,前端有菜单(menu),后端有API(backendApi),一个menu对应的页面有N个API接口来支持,本文介绍如何基于spring security实现前后端的同步权限控制. ...

  6. .Net Core应用框架Util介绍(二) 转

    Util的开源地址 https://github.com/dotnetcore/util Util的开源协议 Util以MIT协议开源,这是目前最宽松的开源协议,你不仅可以用于商业项目,还能把Util ...

  7. ng mock服务器数据

    angualr文档 in-memory-web-api 文档 安装 yarn add angular-in-memory-web-api -S src/app/app.module.ts import ...

  8. angularJS测试一 Karma Jasmine Mock

    AngularJS测试 一 测试工具 1.NodeJS领域:Jasmine做单元测试,Karma自动化完成单元测试,Grunt启动Karma统一项目管理,Yeoman最后封装成一个项目原型模板,npm ...

  9. json-server mock数据

    前言: 项目开发中,影响项目进程的常常是由于在前后端数据交互的开发流程中停滞,前端完成静态页面的开发后,后端迟迟未给到接口.而现在,我们就可以通过根据后端接口字段,建立一个REST风格的API接口,进 ...

  10. Pramp mock interview (4th practice): Matrix Spiral Print

    March 16, 2016 Problem statement:Given a 2D array (matrix) named M, print all items of M in a spiral ...

随机推荐

  1. react navite 学习资料

    react 学习资料 https://github.com/crazycodeboy/GitHubPopular crazycodeboy/GitHubPopular https://github.c ...

  2. UI系统的表示与维护

    UI系统的表示与维护: 渲染单元的组织.维护.交互.解释.渲染. UI系统在应用层连接着视图的表示,在系统层连接着视图的绘制. 一.UI的结构 树形结构 二.UI的描述: 1.UI系统或UIkit或U ...

  3. 实现:API实现创建用户并且添加至管理员

    参考文章:https://www.cnblogs.com/17bdw/p/6790197.html#_label0 利用的API函数: 1.NetUserAdd 2.NetLocalGroupAddM ...

  4. CLR Exception---E0434352

    什么是CLR Exception---E0434352 CLR异常是.NET应用程序生成的异常类型.异常被封装在从System.exception类派生的类中.它的异常代码是0xE0434352,代码 ...

  5. Redis 迁移 DB; move key db

    redis 移动 DB MOVE key db将当前数据库的 key 移动到给定的数据库 db 当中.如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者 key 不存 ...

  6. VUE 基础配置

    原文:https://www.cnblogs.com/LearningOnline/p/9368838.html 1.安装Node.js等软件 报错: 解决: 原文:https://pdf-lib.o ...

  7. Hash总结

    算法介绍 这个没什么好说的,就是一段比较简单的代码,具体的话要看题目. 自然溢出 这个是比较好用而且容易被卡的一种Hash方式. 用\(2^{64}\)当模数然后做\(Hash\),常数比较小. 单模 ...

  8. 浅谈 HTTP协议

    1.什么是http协议Hyper Text Transport Portocal(超文本传输协议)HTTP协议是应用层协议浏览器和web服务器通讯时遵守的约定互联网使用最多的协议提供超文本的传输服务通 ...

  9. 灵活的MyBatis

    一.前言 将数据存储到数据库是开发中很重要的一环.曾经有程序员说自己做过最牛逼的事情就是增删改查.确实我们做了很多页面,后太代码写了很多,可是最终都离不开数据库的增删改查.Java有一套自己的JPA标 ...

  10. ubuntu之路——day17.4 卷积神经网络示例

    以上是一个识别手写数字的示例 在这个示例中使用了两个卷积-池化层,三个全连接层和最后的softmax输出层 一般而言,CNN的构成就是由数个卷积层紧跟池化层再加上数个全连接层和输出层来构建网络. 在上 ...