没有json数据,自己造!mockjs的使用-模拟数据其实超级简单

简介: 没有json数据,自己造!mockjs的使用-模拟数据其实超级简单

虽然mockjs已经有好几年没有更新了,但是这个其实跟年限无关,因为它最终的目的是生成模拟json。

而且mockjs可以用于任何webpack项目中,也就是可以在已有的项目中添加mockjs。比如webpackvue2vue3项目中。

在mock官网有很详细的介绍,下面是介绍步骤。

一、在工程化项目中使用,比如在vue中

1、安装mockjs

npm i -D  mockjs

2、在项目src目录中新建一个mockjsmock的文件夹

3、在mock文件夹下的index.js中写如下代码

import Mock from 'mockjs'
//Random方法是mockjs的核心方法,可以生成各种占位符
const Random = Mock.Random;
// 如果下面直接这样写,只是模拟了一段静态的json文件
let json = Mock.mock({
    // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
    'list|1-10': [{
        // 属性 id 是一个自增数,起始值为 1,每次增 1
        'id|+1': 1
    }]
})
// export default json;  //这样只是导出了一段json,需要在使用的地方直接导入即可
// 如果是想通过模拟接口来使用数据,可以这样做:
Mock.mock("/api/data", "get", {
    // 生成招聘岗位数据
    "positions|5-12": [
      {
        //随机生成guid
        guid: "@guid",
        // 属性名|生成规则:属性值  
        "company|1": ["CSDN", "阿里巴巴", "腾讯", "百度", "华为"],
        companyDescription: "@cparagraph(4)",
        logo: function () {
          return Random.image("36x36", "#d8d8d8", "#000", "png", "Logo");
        },
        "city|1": "长沙市岳麓区",
        "positionTitle|+1": [
          "Java开发工程师",
          "Python开发工程师",
          "前端开发工程师",
          "产品经理",
          "UI设计师",
          "IOS研发工程师",
          "安卓研发工程师",
        ],
        // 薪资
        "salaryRange|1": ["5k-8k", "10k-15k", "15k-20k"],
        // 工作年限
        "workTime|2-10": 2,
        // 招聘人数
        "recruitNumber|1-5": 1,
        // 学历
        "degree|1": ["本科", "硕士", "博士"],
        // 上架时间
        launchTime: '@date("yyyy-MM-dd")',
        // 职位描述
        jobDescription: "@cparagraph(5)",
      },
    ],
  });

4、在main.js中导入mockjs以便全局使用,只需要这样即可,不需要启用

import { createApp } from 'vue'
import App from './App.vue'
import store from './store'
import router from './router'
// 引入mock 
require("./mock");

5、在需要使用模拟数据的组件中,使用axios加载

import axios from "axios";
export default ({
    data(){
        return {
            initialData: [],
        }
    },
    mounted(){
        //这里用axios直接取模拟数据,get后面的地址即为mockjs中定义的模拟数据地址
        axios
          .get("/api/data")
          .then((response) => {
            const { data } = response;
            console.log(data)
          })
          .catch((error) => {
            console.log(error)
          });
    }
})

6、结果

可以在控制台看到如下结果

7、总结

使用mock接口,是不需要在mock/index.jsexport default任何定义好的接口的,只要在这个文件中写了模拟接口,就可以在其他页面使用。

而且在有了后台真实接口后,也很方便将axios中的mock地址换成真实的地址。

假设mockjs内置的占位符还觉得不够用,想要自定义,也可以很方便的通过Mock.extend来生成。

8、资源

mockjs里提供了很多实用、有趣的字段、方法来生成特定的动态数据.

  1. 查看语法
    Syntax Specification · nuysoft/Mock Wiki
  2. 查看Mock.random所能生成的占位符
    Mock.Random · nuysoft/Mock Wiki

二、在浏览器环境中使用

使用步骤基本同上。

1、新建一个index.html,然后在里面导入mock.js,准备用jqueryajax,所以这个也要导入,使用data.js来生成数据,最终的index.html为:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="http://mockjs.com/dist/mock.js"></script>
    <script src="https://apps.bdimg.com/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="js/data.js"></script>
</head>
<body>
</body>
</html>

2、在js/data.js写模拟数据接口,语法同方式一中的mock/index.js一样:

// Random需要单独导入进来,因为Mock是一个构造函数,这个方法是他的静态方法
const Random = Mock.Random
// 定义mock
Mock.mock('/data/getAddr','get',{
    "persons|5-10":[
        {
            guid: "@guid",
            'name':'@cname', //生成一个常见的中文名
            'age|5-100':5,//5只是确认类型
            'sex|1':['男','女'],//表示取数组中的任一项
            'profile':Random.image('200x100','@name'),//用该方法生成一张头像,属性名的值与那么属性的值一样
            // 'location':Random.city( true ) //这样写,生成的地址都是一样的,可以通过函数的方式生成不一样的
            'location':function(){
                return Random.city( true )
            },
            'desc':"@cparagraph(2,4)", //默认生成一段中文文本,c表示中文
            // 'dtime':Random.datetime('yyyy-MM-dd A HH:mm:ss')  //随机生成一个时间日期,也可以写成
            'dtime':"@datetime('yyyy-MM-dd A HH:mm:ss')", //随机生成一个时间日期,也可以写成
            "city|1": "长沙市岳麓区", //字符串后面的数字1表示重复次数
        }
    ]
})

3、在index.html中使用ajax加载模拟数据使用

<script>
        $.ajax({
            url:'/data/getAddr',
            dataType:'json',
            success(res){
                console.log(res);
                $('<pre>').text(JSON.stringify(res, null, 4)).appendTo('body')
            }
        })
    </script>

4、即可在浏览器中看到结果

三、总结

使用mockjs可以方便的模拟接口数据,但是这个毕竟需要学习mockjs的语法规则,才能生成自己想要的接口数据,假设想可视化的生成模拟数据,不需要写代码,并能管理我们生成的数据,可以在本地部署easy-mock:https://github.com/easy-mock/easy-mock/

相关文章
|
2月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
46 1
|
25天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
11天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
14天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
8天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
30天前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
在Java中处理JSON数据:Jackson与Gson库比较
|
1月前
|
JSON JavaScript API
(API接口系列)商品详情数据封装接口json数据格式分析
在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!
|
1月前
|
JSON 前端开发 Java
【Spring】“请求“ 之传递 JSON 数据
【Spring】“请求“ 之传递 JSON 数据
87 2
|
2月前
|
存储 JSON Go
在Gin框架中优雅地处理HTTP请求体中的JSON数据
在Gin框架中优雅地处理HTTP请求体中的JSON数据
|
2月前
|
JSON JavaScript 数据格式
vue写入json数据到文本中+vue引入cdn的用法
vue写入json数据到文本中+vue引入cdn的用法
56 10