MockJs结合json-server模拟后台数据


Posted in Javascript onAugust 26, 2020

本文实例为大家分享了MockJs结合json-server模拟后台数据的具体代码,供大家参考,具体内容如下

说明

Mock.js 是一款模拟数据生成器,可以根据模板生成数据、模拟网络请求,返回模拟数据等
更多细节参考

官网
示例

1. 安装

下载

mkdir moke-test
cd moke-test
npm init
sudo npm install --save-dev json-server mockjs ip
mkdir server #创建本地服务文件夹

2. 配置 json-server

moke-test/server 下创建 index.js

// index.js
const path = require('path');
const jsonServer = require('json-server');
const ip = require('ip').address();
const DB = require('./db.js');
const server = jsonServer.create();
const router = jsonServer.router(DB()); // 将所创建的数据对象传入,以之生成相应的路由
const middlewares = jsonServer.defaults();

 server.use(jsonServer.bodyParser);
 server.use(middlewares);

 server.use(router);

 server.listen({
 host: ip,
 port: 3122
 }, function() {
 console.log(`JSON Server is running in http://${ip}:3122`);
 });

在相同目录下(moke-test/server)下创建 db.js 文件用于通过 mockjs 生成数据

// mock.js
 const Mock = require('mockjs');
 const Random = Mock.Random;

 module.exports = function () {
 const data = Mock.mock({
  'id|+1': 0
 });

 return {data};
 }

3. 使用 mockjs 动态生成假数据

生成假数据有两种方式

数据模板定义
数据占位符定义

1. 数据模板定义

基本结构如下,详情可以查看官网

Mock.mock({
 'name|rule': value
 })
 /*
 name: 属性名
 rule: 生成规则
 value: 属性值
 */

2. 数据占位符定义

占位符只是在属性值字符串中占个位置,并不出现在最终的属性值中

1)、用 @ 来标识其后的字符串是占位符,占位符之间空格隔开
2)、占位符是 Mock.Random 中的方法
3)、使用 Mock.Random.extend() 扩展占位符
4)、占位符 也可以引用 数据模板 中的属性,并且优先使用。

Mock.mock({
 'list|5': [{
  first: '@FIRST', // 可以是大写的
 }]
 })

3. Mock.Random 工具类详解

// mock.js
 const Mock = require('mockjs');
 const Random = Mock.Random;

 module.exports = function () {
 // Random.extend 用于自定义扩展 
  Random.extend({
  courses: ['音乐课', '舞蹈课', '地理课'],
  course: function(date){
  return this.pick(this.courses)
  }
 });

 const courses = Mock.mock({
  startClass: '@bool', // 布尔值,可以传入参数设置频率
  token: '@string("upper", 2, 8)', // 随机字符串
  createData: '@datetime("yyyy-MM-dd A HH:mm:ss")', // 返回日期
  image: '@image("200x100")', // 模拟图片 'x'链接 
  manager: '@cname', // 中文名
  'partners|3': [
  '@name' // 英文名
  ], 
  website: '@url',
  email: '@email',
  'password|2': '**', // 数据模板下,值为字符串表示按照规则重复字符串
  'contents|1-20': [{ // 数据模板下,值为数组或者对象 rule 部分都规定了显示的元素数量
  'id|+1': 0, // 数据模板下,值为数值表示初始值或者底数(按招规则细分)
  courseType: '@COURSE ', // 使用扩展
  courseName() { // 值可以是一个函数,用来细致模拟数据
   return this.courseType + ' ' + Random.natural(1, 10) + '班'
  },
  name: '@courseType @natural(1, 10) 班', // 可以同时使用多个占位符,用空格隔开
  'teacher': '@cname',
  position: '@courseType 第 @id 教室', // 引用当前数据模板中的内容
  students: /\d{5,10}/, // 使用正则规定数据格式
  classTime: '@datetime("M月d日起 每周三 HH:mm")'
  }]
 })

 return {courses};
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS获取IUSR_机器名和IWAM_机器名帐号的密码
Dec 06 Javascript
fromCharCode和charCodeAt 方法
Dec 27 Javascript
动态刷新 dorado树的js代码
Jun 12 Javascript
Javascript 读书笔记索引贴
Jan 11 Javascript
javascript在事件监听方面的兼容性小结
Apr 07 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
Apr 24 Javascript
js replace 与replaceall实例用法详解
Aug 03 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
Sep 01 Javascript
JavaScript ParseFloat()方法
Dec 18 Javascript
BootStrap按钮标签及基本样式
Nov 23 Javascript
Vue.js原理分析之observer模块详解
Feb 17 Javascript
浅谈Javascript中的对象和继承
Apr 19 Javascript
微信小程序 调用微信授权窗口相关问题解决
Jul 25 #Javascript
mock.js模拟前后台交互
Jul 25 #Javascript
解决Vue打包后访问图片/图标不显示的问题
Jul 25 #Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
Jul 25 #Javascript
vue使用代理解决请求跨域问题详解
Jul 24 #Javascript
Vue父组件如何获取子组件中的变量
Jul 24 #Javascript
mock.js模拟数据实现前后端分离
Jul 24 #Javascript
You might like
php的大小写敏感问题整理
2011/12/29 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
2016/11/09 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
2016/11/18 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
python中解析json格式文件的方法示例
2017/05/03 Python
python如何通过实例方法名字调用方法
2018/03/21 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
酒店副总岗位职责
2013/12/24 职场文书
简历中的自我评价范文
2014/02/05 职场文书
军训自我鉴定100字
2014/02/13 职场文书
我爱我家教学反思
2014/05/01 职场文书
禁烟标语大全
2014/06/11 职场文书
小学课外阅读总结
2014/07/09 职场文书
毕业横幅标语
2014/10/08 职场文书
基于Go语言构建RESTful API服务
2021/07/25 Golang