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 相关文章推荐
innerText和innerHTML 一些问题分析
May 18 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
Dec 30 Javascript
js识别uc浏览器的代码
Nov 06 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
Apr 26 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
May 12 Javascript
AngularJS 执行流程详细介绍
Aug 18 Javascript
基于JS实现bookstore静态页面的实例代码
Feb 22 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
Mar 08 Javascript
js实现本地图片文件拖拽效果
Jul 18 Javascript
微信小程序 页面跳转事件绑定的实例详解
Sep 20 Javascript
使用store来优化React组件的方法
Oct 23 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
Nov 01 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中的MVC模式运用技巧
2007/05/03 PHP
PHP 字符串 小常识
2009/06/05 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
如何实现JS函数的重载
2006/09/22 Javascript
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
微信小程序表单验证form提交错误提示效果
2020/06/19 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
简单理解Python中的装饰器
2015/07/31 Python
Python深入06——python的内存管理详解
2016/12/07 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
python导入pandas具体步骤方法
2019/06/23 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
教师产假请假条范文
2014/04/10 职场文书
Android基于Fresco实现圆角和圆形图片
2022/04/01 Java/Android