前后端分离开发之前端自己的API(DB)---- (2)

[^_^]: <> (用 mockjs 快速生成数据)

Use Mockjs for generating mock data

书接上回。 上一篇中,介绍了如何使用 json-server ,来启动开发环境的API数据服务, 接下来,讲一下使用 mockjs 来产生随机数据。

注:

·# mockjs 自己也可以 起服务,但是不能跨域

·# 配合 json-server 使用更好

·# mockjs 可以很好地支持造中文

·# 其它语言如日语怎么办:临时用的变通方法:定义一个 string 或 array 来做池子,再在里面选

0. 开工

 # 初始化工程目录,以创建出 package.json 文件

 # 安个包:concurrently

 # 安个包:mockjs

npm init
npm install -D concurrently npm install -D mockjs

 concurrently 包:这个可以不要。它能让你同时执行多个scripts以实现前后端同时启动, 而不用的话也可以以同步方式执行多个任务,这个地方用了只是笔者希望试一下,用在这里会不会执行成功, 好玩嘛,又不要钱对不对。

1. 建一个 mock.js 文件,用来生成json数据文件

以下贴上本次demo的删减版(不能原样往上贴,国际惯例)示例

关键就是mockjs提供的方法的使用,这个做的时候还是建议自己查官网API介绍

网址:https://github.com/nuysoft/Mock/wiki/

(function () {
    let Mock = require('mockjs');
    let fs = require('fs')
    let Random = Mock.Random;

    let data = {
        Foods: [],
        People: []
    };

    let foodIdList = []

    function generateData() {

        createFoods();
        createPeople();
    }
    
    function writeJson() {
        var str = JSON.stringify(data, null, "	");
        fs.writeFile('./db.json', str, function (err) {
            if (err) {
                console.error(err);
            }
        })
    }

    function createFoods () {
        for (let i = 0; i < 20; i++) {
            data.Foods.push({
                id: i,
                Name: Random.csentence(2, 10),
                Price: Random.integer(5, 99),
                CreatedAt: Random.date('yyyy-MM-dd'),
                CreatedBy: Random.integer(1, 20),
                UpdatedAt: Random.date('yyyy-MM-dd'),
                UpdatedBy: Random.integer(1, 20),
            })
        }

        foodIdList = data.foodIdList.map(x => x.id);
    }

    function createPeople() {
        for (let i = 0; i < 20; i++) {
            data.People.push({
                id: i,
                Name: Random.cword(3),
                FavourateFoodId: Random.pick(foodIdList),
                Email: Random.email('gmail.com'),
                CreatedAt: Random.date('yyyy-MM-dd'),
                CreatedBy: Random.integer(1, 20),
                UpdatedAt: Random.date('yyyy-MM-dd'),
                UpdatedBy: Random.integer(1, 20),
            })
        }
    }

    // データ生成
    generateData();

    // JSONファイルに書き込む
    writeJson(data)
})()

2. 配置 package.json 里的 scripts

    "gen": "node mock.js",
    "serve": "json-server db.json",
    "mock": "concurrently "npm run gen" "npm run serve""

# 不使用 concurrently ,串行执行的话修改如下即可:

  "mock": "npm run gen && npm run serve"

3. 大功告成 END

如果第一次运行,就执行:

npm run mock

这样就回生成一次 db.json 文件,

第二次的时候,只执行: 

 npm run serve

就可以了

调用api的时候变更会保持在这个 json 文件,

如果想重新做-假数据,那就执行 gen 或 mock


自己摸索着做出来

在此作个记录也许会对新人有帮助

如有纰漏请斧正


作者:码路工人

公众号:码路工人有力量(Code-Power)

欢迎关注个人微信公众号 Coder-Power

一起学习提高吧~

原文地址:https://www.cnblogs.com/CoderMonkie/p/front-end-mockdata-use-mockjs.html