vue中使用mock

vue中使用mock

安装mockjs

npm install mockjs

基础使用

  1. 新建拦截规则

    路径/src/mock/index.js

    import Mock from 'mockjs'
    
    const Random = Mock.Random
    
    var listData = function() {
        let _data = []
        for (let i = 0; i < 20; i++) {
        let newList = { // 详细 规则 参照mockjs官网
          title: Random.csentence(5, 30), //  Random.csentence( min, max )
          imgSrc: Random.dataImage('200x160', '这是图片中的文本'), // Random.dataImage( size, text ) 生成图片(base64位数据格式)
          author_name: Random.cname(), // Random.cname() 随机生成中文名
          date: Random.date() + ' ' + Random.time() // Random.date()指示生成的日期字符串的格式,默认为yyyy-MM-dd;Random.time() 返回一个随机的时间字符串
        }
          _data.push(newList)
      }
      return {_data: _data}
    }
    // url为要拦截的请求地址  请求方式  请求数据(规则) (此处api会被mockjs拦截)
    Mock.mock('/getNewList', 'get', listData)
    
  2. 在main.js中引用

    import Vue from 'vue';
    import App from './App.vue';
    import router from './router';
    import store from './model';
    // 引用mock
    import './mock';
    
    Vue.config.productionTip = false;
    
    new Vue({
      router,
      store,
      render: (h) => h(App)
    }).$mount('#app');
    
    

动态引入

  1. 注册所有mock服务

    路径/src/mock/index.js

    // 首先引入Mock
    import Mock from 'mockjs';
    
    // 设置拦截ajax请求的相应时间
    Mock.setup({
      timeout: '200-600'
    });
    
    let configArray = [];
    
    // 使用webpack的require.context()遍历所有mock文件
    const files = require.context('.', true, /\.js$/);
    files.keys().forEach((key) => {
      if (key === './index.js') return;
      configArray = configArray.concat(files(key).default);
    });
    
    // 注册所有的mock服务
    configArray.forEach((item) => {
      // eslint-disable-next-line no-restricted-syntax
      for (const [path, target] of Object.entries(item)) {
        const protocol = path.split('|');
        Mock.mock(new RegExp(`^${protocol[1]}`), protocol[0], target);
      }
    });
    
  2. 在mock文件夹下新建mock规则

    路径/src/mock/news.js

    const mewsList = [{title: 'haah', content: '21312'}];
    const mewsList = [{title: 'haah', content: '21312'}];
    
    export default {
      'get|/getUserList': (option) => ({
        statusCode: 0,
        message: 'success',
        data: demoList
      }),
      'get|/getChartList': (option) => ({
        statusCode: 0,
        message: 'success',
        data: demoList
      }),
    };
    
  3. 在main.js中引用

    import Vue from 'vue';
    import App from './App.vue';
    import router from './router';
    import store from './model';
    // 引用mock
    import './mock';
    
    Vue.config.productionTip = false;
    
    new Vue({
      router,
      store,
      render: (h) => h(App)
    }).$mount('#app');
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值