项目中使用的是RESTFUL接口规范,项目框架用的是vue,项目开始时,调研了几个比较有名的mock数据的插件:比如webpack的中间件api-mock,json-server,mockjs,还有express。结合我们项目的情况,逐一尝试,最后选择了express。mock方式很简单,以下为使用方式:

1. 安装node/express

2. package.json 中:

npm run mock 为单独开启node的mock服务;

由于项目中同时需要编译本地代码,于是写了一个shell脚本文件,同时开启本地代码编译及mock服务;

以下为shell脚本中内容:

 #!/bin/bash

 npm run mock &
npm run dev &

终止程序必须全局终止node进程,需要全局命令:taskkill /f /t /im node.exe

3. 创建 mock 文件夹,准备server代码编写,此处命名为 mock.js:

以下为 mock.js 中写法:

var express = require('express');
var app = express(); // 指定html
app.get('/index.html', function(req, res) {
res.sendFile(__dirname + req.path);
}); // 配置Mock数据
var fs = require('fs');
app.post('/home', function(req, res) {
res.setHeader('Content-Type', 'application/json; charset=utf-8');
fs.readFile('./mock/home.json', function(err, data) {
if (err) throw err; res.json(JSON.parse(data));
});
}); // 监听端口
app.listen('3000', function () {
console.log('mock app listening at http://localhost:3000');
});

优化:

一个项目中不可能只有一个接口,为了方便配置,在mock文件夹下用mockLIst.js去做统一配置

/**
* @note setOnline 线上接口 配置
* @param name 本地接口名
* type 接口类型
* url 线上接口地址
*/
var fs = require('fs');
var setOnline = [
{
name: 'home',
type: 'post',
url: '/home'
}
// 第二个接口... 第三个接口
]; // 输出配置项
exports.setOnline = setOnline; // 遍历输出json数据
for (var i = 0, len = setOnline.length; i < len; i++) {
(function() {
var name = setOnline[i].name; exports[name] = function(req, res) {
res.setHeader('Content-Type', 'application/json; charset=utf-8');
fs.readFile('./mock/' + name + '.json', function(err, data) {
if (err) throw err; res.json(JSON.parse(data));
});
};
})(i);
}

修改后的 mock.js:

var express = require('express');
var app = express(); app.get('/index.html', function(req, res) {
res.sendFile(__dirname + req.path);
}); // Mock数据
var mock = require('./mock/mockList.js');
var setOnline = mock.setOnline; setOnline.forEach(function(m) {
app[m.type](m.url, mock[m.name]);
}); app.listen('3737', function () {
console.log('localhost:3737/index.html');
});

4. 完成后,启动服务 npm run mock 即可

mockList

前端使用express mock数据的更多相关文章

  1. vue-cli项目使用mock数据的方法(借助express)

    前言 现如今前后端分离开发越来越普遍,前端人员写好页面后可以自己模拟一些数据进行代码测试,这样就不必等后端接口,提高了我们开发效率.今天就来分析下前端常用的mock数据的方式是如何实现的. 主体 项目 ...

  2. Vue CLI 3.0脚手架如何在本地配置mock数据

    前后端分离的开发模式已经是目前前端的主流模式,至于为什么会前后端分离的开发我们就不做过多的阐述,既然是前后端分离的模式开发肯定是离不开前端的数据模拟阶段. 我们在开发的过程中,由于后台接口的没有完成或 ...

  3. 前端模拟(mock)接口数据(koa)

    在前后端分离开发项目时,经常会有前后端进度不一致,可能前端界面开发已经完成,就等接口了,如果等接口出来再联调的话时间可能会来不及. 这个时候,前端就可以根据制定好的接口规范和接口文档来mock接口数据 ...

  4. 前端开发:mock.js的简单应用(生成随机数据,拦截 Ajax 请求)

    摘要 在前端开发过程中,后端接口还没有完全开发完成时,前端开发人员就需要学会自己模拟后端接口数据,更快更好的完成开发任务.模拟后端接口数据的js库有很多,今天就简单就简单的分享下mock.js在前端开 ...

  5. 前端通信:ajax设计方案(十)--- 完善Promise A+规范,增加mock数据功能

    半年不迭代,迭代搞半年,说的就是我,这里有点尴尬了,直接进入主题吧 我记得在这篇博客的时候集成了Promise的,不过那个时候就简简单单的写了一点最基础,在一些特殊的case上,还是有点问题的,所以才 ...

  6. vue-cli 本地开发mock数据使用方法

    vue-cli 中可以通过配置 proxyTable 解决开发环境的跨域问题,具体可以参考这篇文章: Vue-cli proxyTable 解决开发环境的跨域问题 如果后端接口尚未开发完成,前端开发一 ...

  7. vue2.0:(二)、mock数据

    什么是mock数据呢?很多情况下,后台的搭建比起前端来说要麻烦的多,所以,常常是前端写好了页面以后后台接口却没有写好,但是在一个项目中,接口调试确实是最浪费时间的,所以,往往前端需要自己模拟数据. 第 ...

  8. vue 项目初始化、mock数据以及安装less

    vue 创建一个项目 1.首先建立一个空文件夹,然后将这个文件夹要放到码云或者其他代码管理平台. 例如码云: 在码云上建立一个项目,然后在控制台进入这文件夹执行 git clone 地址是码云上创建的 ...

  9. react 项目 mock数据

    前言 我们都知道在实际的开发阶段,后端接口开发是和前端开发同步进行,甚至迟于前端的进度,这就直就导致前端需要等待后端接口的时间. 这种情况就严重导致前端开发缓慢,那这时候前端的开发人员只能写静态模拟数 ...

随机推荐

  1. 嵌入式 视频编码(H264)hi3518

    这几天在编写视频录制模块,所以,闲暇之余,又粗粗的整理了一下,主要是API,以备不时之用    摄像头获取的模拟信号通过经芯片处理(我们使用的是CX25825),将模拟信号转成数字信号,产生标准的IT ...

  2. Excel公式

    多个IF =IF(ISNUMBER(SEARCH("lz",E7)),"lz", IF(ISNUMBER(SEARCH("zch",E7)) ...

  3. UVA-10779 Collectors Problem

    https://vjudge.net/problem/UVA-10779 题意:n个人,m种贴纸,每个人开始有一些贴纸 第一个人可以跟任何人交换任何贴纸 其余人只能用重复的贴纸 跟第一个人交换他们没有 ...

  4. [转]memmove、memcpy和memccpy

    原文地址:http://www.cppblog.com/kang/archive/2009/04/05/78984.html 在原文基础上进行了一些小修改~ memmove.memcpy和memccp ...

  5. Linux 操作系统下 VI 编辑器常用命令详细介绍

    一.Vi 简介 vi是unix世界中最通用的全屏编辑器,linux中是用的是vi的加强版vim,vim同vi完全兼容,vi就是"visual interface"的缩写.它可以执行 ...

  6. Redhat 7 之 Mariadb(mysql)

    Redhat7 之后mysql 改为Mariadba,由于mysql 被卖给了IBM, 有闭源的风险. 所以就另外开了一个新的分支,继续开源.Maria 来源于mysql开发者的女儿的名字. 1. 安 ...

  7. 【BZOJ】3052: [wc2013]糖果公园 树分块+带修改莫队算法

    [题目]#58. [WC2013]糖果公园 [题意]给定n个点的树,m种糖果,每个点有糖果ci.给定n个数wi和m个数vi,第i颗糖果第j次品尝的价值是v(i)*w(j).q次询问一条链上每个点价值的 ...

  8. Let's Encrypt 免费通配 https 签名证书 安装方法

    安装环境 centOs7 主要通过 acme.sh (bash脚本)来注册签名 git地址:https://github.com/Neilpang/acme.sh 申请证书流程 1.申请证书-> ...

  9. Django(基础篇)

    1.请求周期 url> 路由 > 函数或类 > 返回字符串或者模板语言? Form表单提交:        提交 -> url > 函数或类中的方法           ...

  10. mysql安装后开启远程

    操作系统为centos7 64 1.修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2. ...