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遍历 table的脚本
Jul 23 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
Mar 05 Javascript
修复ie8&chrome下window的resize事件多次执行
Oct 20 Javascript
JavaScript实现基于Cookie的存储类实例
Apr 10 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
Nov 20 Javascript
学习jQuey中的return false
Dec 18 Javascript
BootStrap实现树形目录组件代码详解
Jun 21 Javascript
jQuery深拷贝Json对象简单示例
Jul 06 Javascript
jQuery使用deferreds串行多个ajax请求
Aug 22 Javascript
js遍历map javaScript遍历map的简单实现
Aug 26 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
Sep 28 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中文件上传的安全问题
2006/10/09 PHP
PHP的FTP学习(二)
2006/10/09 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
javascript网页关键字高亮代码
2008/07/30 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
2019/10/27 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
Python实现大文件排序的方法
2015/07/10 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
python之Socket网络编程详解
2016/09/29 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
Python实现连接postgresql数据库的方法分析
2017/12/27 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
Java如何调用外部Exe程序
2015/07/04 面试题
致铅球运动员广播稿精选
2014/01/12 职场文书
员工合理化建议书
2014/05/19 职场文书
组工干部演讲稿
2014/09/02 职场文书
工作失职检讨书500字
2014/10/17 职场文书
法学专业求职信范文
2015/03/19 职场文书
小学教师教学反思
2016/02/24 职场文书
Python基础学习之奇异的GUI对话框
2021/05/27 Python
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python