Mock.js的基本使用

Mock.js的基本使用

概述

  • Mock.js是一款模拟JSON数据的前端技术
  • 对于前后端分离的项目,后端API数据没上线时使用

开始&安装

  • 安装

    npm install mockjs

  • 官网例子

    • Node(CommonJS)用法

      // 使用 Mock
      var Mock = require('mockjs')
      var data = Mock.mock({
          // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
          'list|1-10': [{
              // 属性 id 是一个自增数,起始值为 1,每次增 1
              'id|+1': 1
          }]
      })
      // 输出结果
      console.log(JSON.stringify(data, null, 4))
      
    • 浏览器使用

      <script src="http://mockjs.com/dist/mock"></script>
      <script>
          var data = Mock.mock({
          // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
          'list|1-10': [{
              // 属性 id 是一个自增数,起始值为 1,每次增 1
              'id|+1': 1
          }]
      })
      // 输出结果
      console.log(JSON.stringify(data, null, 4))
      </script>
      

语法规范

  • 包含数据模板定义规范和数据占位定义规范

  • 数据模板定义规范:属性名、生成规则和属性值

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

    • 生成规则

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

  • 数据定义的占位符@,占领属性值的位置

    'list|5': {
        cname: '@cname',
        city: '@city',
        full: '@cname - @city'
    }
    
  • 常用随机占位符

    //两种输出方式
    console.log(Mock.Random.cname())
    console.log(Mock.mock('@cname'))
    
    //常用的占位符
    //随机中文名,不带c就是英文名
    console.log(Mock.mock('@cname'))
    //随机id
    console.log(Mock.mock('@id'))
    //随机英文标题
    console.log(Mock.mock('@ctitle'))
    //随机颜色,十六进制
    console.log(Mock.mock('@color'))
    //随机图片,图片地址
    console.log(Mock.mock('@image'))
    //随机ip地址
    console.log(Mock.mock('@ip'))
    //随机url地址
    console.log(Mock.mock('@url'))
    //随机字符串
    console.log(Mock.mock('@string'))
    //随机数值
    console.log(Mock.mock('@integer'))
    //随机日期
    console.log(Mock.mock('@datetime'))
    //随机email
    console.log(Mock.mock('@email'))
    
  • 自行拓展占位符

    Mock.Random.extend(node: {
         return this.pick([
        	'宠物店',
            '美容店',
            '小吃店',
            '宠物店',
            '快餐店'          
       	]);
    });
    
    //调用
    console.log(Mock.mock('@cstore'));
    

axios的入门和安装

  • axios.js是一个基于Promise的HTTP库,支持Node和浏览器环境

  • 安装

    npm install axios

  • 简单的数据获取

    const axios = require('axios');
    //使用get请求获取数据
    axios.get('https://xxxxxxxxxxxxxxx')
    .then(res => {
        console.log(res.data);
    })
    .catch(err => {
        console.log('错误:' + err )
    })
    
  • axios的简单配置

    //配置get请求的参数
    axios.get('https://xxxxxxxxxxxxxxx', {
        params: {
            id: 1,
            status: 5
        }
    })
    .then(res => {
        console.log(res.data);
    })
    .catch(err => {
        console.log('错误:' + err )
    })
    
    //直接配置
    axios.request({
        method: 'get',
        url: 'https://xxxxxxxxxxxx'
        params: {
            id: 1,
            status: 5
        }
    })
    .then(res => {
        console.log(res.data);
    })
    .catch(err => {
        console.log('错误:' + err )
    })
    
  • axios并发操作

    • 项目中的多个异步请求会根据耗时长短来执行

    • 需要根据指定的顺序执行,用于all方法

      axios.all([
          axios({
              url:'https//xxxxxxxxxxxxxx'
              data:'1.异步'
          }),
           axios({
              url:'https//xxxxxxxxxxxxxx'
              data:'2.异步'
          }),
           axios({
              url:'https//xxxxxxxxxxxxxx'
              data:'3.异步'
          })
      ]).then(axios.spread((res1, res2, res3) => {
          console.log(res1.config,data);
          console.log(res2.config,data);
          console.log(res3.config,data);
      }))
      
  • axios的基地址设置

    //全局设置
    axios.defaults.baseURL = 'https://xxxx';
    
    //实例化
    const myAxios = axios.create();
    myAxios.defaults.baseURL = 'https://xxxx';
    
    myAxios.request({
        method: 'get',
        url: '/data.json'
    }).then(res => {
        console,log(res.data)
    })
    
  • 拦截操作

    • 在Ajax获取数据之前先进行一些事务的处理
    • 这些操作包括:修改axios配置信息,loading,判断验证跳转等
    //添加拦截请求
    myAxios.interceptors.request.use(config => {
        console.log('loading...'); 
        return config;
    })
    
    //添加响应拦截
    myAxios.interceptors.response.use(response => {
        //在输出数据前,对数据进行拦截处理
        return response.data   
    })
    

Mock拦截axios的请求

  • axios异步数据还没用上线,我们可以通过mock拦截请求,随机生成填充的数据进行前端设计
//axios请求
axios.request({
    method:'get',
    url:'https://xxxxxxxxxx'
}).then(res => {
    console.log(res.data);
})

//mock拦截
Mock.mock('https://xxxxxxxxxx',{
    'list|5-10': [{
        'id|+1': 1,
        'username':'@cname',
        'email': '@email',
        'price': '@integer',
        'gender': '@boolean'
    }]
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值