mock.js了解学习

mock.js官网 

1.安装

npm i mockjs

 其他辅助安装

npm i json5
npm i axios

2.语法规范

该部分出自b站李炎恢视频,有兴趣可以去看

1. Mock.js 的语法规范包括两个部分:数据模板定义规范和数据占位定义规范; 2. 数据模板定义的规范包含 3 个部分:属性名、生成规则和属性值

//'属性名|生成规则':属性值
'name|rule':value 

1.字符串/数值(7种)

生成规则说明示例
min-max生成 min ~ max 之间的字符串'list|1-10' 
count生成 count 个字符串'list|5'
min-max.dmin-dmax生成 min ~ max之间的浮点数, 小数点位数在 dmin ~ dmax 之间'id|1-10.1-3' : 1
count.dcount生成 count 个字符串, 小数点位数为 dcount
'id|8.2' : 1
 
min-max.dcount//同上
count.dmin-dmax//同上
+step每次进行累加一个值'id|+1' : 1

2.布尔值/对象/数组 

生成规则说明示例
布尔值生成布尔值,1/2 概率 truetrue 'flag|1' : true
布尔值 min-max生成布尔值, 概率为 min/(min + max)'flag|1-10' : true
对象 count从对象中随机抽取 count 个属性'obj|2' : obj
对象 min-max从对象中随机抽取 min-max 属性'obj|1-3' : obj
数组 1获取 1 次数组'arr|1' : arr
数组 count重复 count 次组成新数组'arr|2' : arr
数组+累加arr|+1' : arr
数组 min-max重复 min-max 次组成新数组'arr|1-2' : arr

3.函数和正则表达式

生成规则说明示例
函数支持函数'fn|1' : function
正则支持正则reg|1' : /[a-z]/

4.常用随机占位符

TypeMethod
Basicboolean, natural, integer, float, character, string, range, date, time, datetime, now
Imageimage, dataImage
Colorcolor
Textparagraph, sentence, word, title, cparagraph, csentence, cword, ctitle
Namefirst, last, name, cfirst, clast, cname
Weburl, domain, email, ip, tld
Addressarea, region
Helpercapitalize, upper, lower, pick, shuffle
Miscellaneousguid, id

3.随机数据拓展

mock.Random.extend({
    //随机占位符命名
    cstore(){
        return this.pick([
            '应用商店',
            '水果店',
            '小吃店',
            '快餐店',
            '理发店'
        ]);
    }
});

console.log('cstore:',Mock.mock('@cstore'));

4.在vue中使用mockjs

1.创建mock服务

//mock/userinfo.json5

// npm i json5 解决json文件中不能注释的问题  在vscode中需要配合 JSON5 syntax 插件使用
{
    id: '@id',
    name: '@cname',
    email: '@email',
    data: '@date',
    avatar: "@image('200x200','pink','#fff','avatar')",
    description: '@paragraph',
    url: '@url',
    ip: '@ip'
}
//mock/index.js
const fs = require('fs');
const path = require('path');
const JSON5 = require('json5');
const Mock = require('mockjs');


// 读取json文件
function getJsonFile(filePath){
    const json = fs.readFileSync(path.join(__dirname, filePath),'utf-8');
    return JSON5.parse(json);
}


// 返回一个函数
module.exports = function(app){
    if(process.env.Mock == 'true'){
        // 监听http请求
        app.get('/user/userinfo',function(rep,res){
            // 每次响应请求时读取 mock data的json文件
            const json = getJsonFile('./userinfo.json5');
            // 将json传入mock方法生成数据
            res.json(Mock.mock(json));
        });
    }
}

2.在vue.config.js中引入

module.exports = {
    devServer: {
        before: require('./mock/index.js')
    }
};

加入自定义环境变量

//.env.development
MOCK=true

3.在组件中调用

//views/HelloWorld.vue
export default {
  name: 'HelloWorld',
  props: {
    msg: String
  },
  mounted(){
    axios.get('/user/userinfo')
    .then(res => {
      console.log(res.data);
    })
    .catch(err => {});
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值