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 相关文章推荐
JavaScript 密码强度判断代码
Sep 05 Javascript
JqGrid web打印实现代码
May 31 Javascript
JQuery调用绑定click事件的3种写法
Mar 28 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
Aug 07 Javascript
详解用vue-cli来搭建vue项目和webpack
Apr 20 Javascript
JS+jQuery实现注册信息的验证功能
Sep 26 jQuery
jQuery实现的手动拖动控制进度条效果示例【测试可用】
Apr 18 jQuery
微信小程序左滑动显示菜单功能的实现
Jun 14 Javascript
node thread.sleep实现示例
Jun 20 Javascript
element-ui循环显示radio控件信息的方法
Aug 24 Javascript
JS使用数组实现的队列功能示例
Mar 04 Javascript
基于vue实现探探滑动组件功能
May 29 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通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
angularjs实现多张图片上传并预览功能
2017/02/24 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
layui表格数据重载
2019/07/27 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
Python 模板引擎的注入问题分析
2017/01/01 Python
点球小游戏python脚本
2018/05/22 Python
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
Python实现数据结构线性链表(单链表)算法示例
2019/05/04 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
python中remove函数的踩坑记录
2021/01/04 Python
Html5定位终极解决方案
2020/02/05 HTML / CSS
智利最大的网上商店:Linio智利
2016/11/24 全球购物
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
报关专员求职信范文
2014/02/22 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
个人查摆剖析材料
2014/10/16 职场文书
领导欢迎词致辞
2015/01/23 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
教师学习心得体会范文
2016/01/21 职场文书
公司转让协议书
2016/03/19 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
Vue vee-validate插件的简单使用
2021/06/22 Vue.js