• 前后端分离开发之前端自己的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

    一起学习提高吧~

  • 相关阅读:
    HDU 5247
    HDU 4965
    CodeForces 445B
    HDU 5835
    CodeForces 731C
    HDU 5783
    CodeForces 660D
    POJ 1631
    HDU 6112
    HDU 5860
  • 原文地址:https://www.cnblogs.com/CoderMonkie/p/front-end-mockdata-use-mockjs.html
Copyright © 2020-2023  润新知