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 相关文章推荐
使用jQuery validate 验证注册表单实例演示
Mar 25 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
Aug 01 Javascript
点击页面其它地方隐藏该div的两种思路
Nov 18 Javascript
浅析JQuery中的html(),text(),val()区别
Sep 01 Javascript
jquery $(document).ready()和window.onload的区别浅析
Feb 04 Javascript
JS实现控制表格行内容垂直对齐的方法
Mar 30 Javascript
JavaScript去除数组里重复值的方法
Jul 13 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
Sep 26 Javascript
js实现瀑布流的三种方式比较
Jun 28 Javascript
深入分析javascript中的错误处理机制
Jul 17 Javascript
浅谈React中的元素、组件、实例和节点
Feb 27 Javascript
详解Angular操作cookies方法
Jun 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
phpstrom使用xdebug配置方法
2013/12/17 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
几种响应式文字详解
2017/05/19 Javascript
Angularjs实现下拉框联动的示例代码
2017/08/22 Javascript
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
vue使用过滤器格式化日期
2021/01/20 Vue.js
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
Python+Django搭建自己的blog网站
2018/03/13 Python
python实现简易动态时钟
2018/11/19 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
python实现简单学生信息管理系统
2020/04/09 Python
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
学校爱心捐款倡议书
2014/05/13 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
2015公司年度工作总结
2015/05/14 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
公司年会晚会开幕词
2019/04/02 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python
用Python生成会跳舞的美女
2022/01/18 Python
css3 选择器
2022/05/11 HTML / CSS
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS