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不完美解决click和dblclick事件冲突问题
Jul 16 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
Apr 22 Javascript
js实现下拉框选择要显示图片的方法
Feb 16 Javascript
JS动态修改iframe内嵌网页地址的方法
Apr 01 Javascript
JavaScript使用concat连接数组的方法
Apr 06 Javascript
IE浏览器下PNG相关功能
Jul 05 Javascript
表单验证插件Validation应用的实例讲解
Oct 10 Javascript
通用javascript代码判断版本号是否在版本范围之间
Nov 29 Javascript
基于JS实现导航条flash导航条
Jun 17 Javascript
Vue.js tab实现选项卡切换
May 16 Javascript
wx-charts 微信小程序图表插件的具体使用
Aug 18 Javascript
js实现简单的无缝轮播效果
Sep 05 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中jpgraph类库的使用介绍
2013/08/08 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
React入门教程之Hello World以及环境搭建详解
2017/07/11 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
详解Python中的__init__和__new__
2014/03/12 Python
Python NumPy库安装使用笔记
2015/05/18 Python
Python selenium如何设置等待时间
2016/09/15 Python
Python中如何获取类属性的列表
2016/12/26 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
python2与python3共存问题的解决方法
2018/09/18 Python
Python+Appium实现自动化测试的使用步骤
2020/03/24 Python
使用Python实现批量ping操作方法
2020/05/06 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
Matplotlib.pyplot 三维绘图的实现示例
2020/07/28 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
Delphi工程师笔试题
2013/09/21 面试题
出纳岗位职责范本
2013/12/01 职场文书
大学生自助营养快餐店创业计划书
2014/01/13 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
雷峰塔导游词
2015/02/09 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
实践论读书笔记
2015/06/29 职场文书