美文网首页
moke.js在vue中的使用

moke.js在vue中的使用

作者: 廖小芝 | 来源:发表于2020-03-27 09:52 被阅读0次

http://mockjs.com/examples.html#DPD

1、使用npm安装:npm install mockjs;

或直接<script src="http://mockjs.com/dist/mock.js"></script>

2、创建mock.js文件

mock.js 代码如下


import Mock from 'mockjs' // 引入mockjs

const Random = Mock.Random // Mock.Random 是一个工具类,用于生成各种随机数据
const domain = 'http://mockjs.com/api' // 定义默认域名,随便写

let data = [] // 用于接受生成数据的数组
let size = [
    '300x250', '250x250', '240x400', '336x280',
    '180x150', '720x300', '468x60', '234x60',
    '88x31', '120x90', '120x60', '120x240',
    '125x125', '728x90', '160x600', '120x600',
    '300x600'
] // 定义随机值
for (let i = 0; i < 10; i++) { // 可自定义生成的个数
    let template = {
        'Boolean': Random.boolean, // 可以生成基本数据类型
        'Natural': Random.natural(1, 10), // 生成1到100之间自然数
        'Integer': Random.integer(1, 100), // 生成1到100之间的整数
        'Float': Random.float(0, 100, 0, 5), // 生成0到100之间的浮点数,小数点后尾数为0到5位
        'Character': Random.character(), // 生成随机字符串,可加参数定义规则
        'String': Random.string(2, 10), // 生成2到10个字符之间的字符串
        'Range': Random.range(0, 10, 2), // 生成一个随机数组
        'Date': Random.date(), // 生成一个随机日期,可加参数定义日期格式
        'Image': Random.image(Random.size, '#02adea', 'Hello'), // Random.size表示将从size数据中任选一个数据
        'Color': Random.color(), // 生成一个颜色随机值
        'Paragraph': Random.paragraph(2, 5), //生成2至5个句子的文本
        'Name': Random.name(), // 生成姓名
        'Url': Random.url(), // 生成web地址
        'Address': Random.province() // 生成地址
    }
    data.push(template)


}
Mock.mock(`${domain}/data/index`, 'get', data)

let banner = [];
for (let i = 0; i < 3; i++) {
    let bannerdata = {
        'link': Random.url(), // 生成web地址
        'image':Random.dataImage('750x400'),
    }
    banner.push(bannerdata)
}
let recommend = [];
for (let i = 0; i < 4; i++) {
    let recommendData = {
        'link': Random.url(), // 生成web地址
        'image':Random.dataImage('150x150'),
    }
    recommend.push(recommendData)
}

// Mock.mock('/data/index', 'post', data) // 根据数据模板生成模拟数据

Mock.mock(`${domain}/home/banner`, 'get', banner);
Mock.mock(`${domain}/home/recommend`, 'get', recommend)


3、main.js 引入mock.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

import 'network/mock' //引入mock.js

Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

4、axios请求封装的request.js代码如下

import axios from 'axios'

export function request(config) {
  // 1.创建axios的实例
  const instance = axios.create({
    // baseURL: 'http://123.207.32.32:8000',
    baseURL: 'http://mockjs.com/api',
    timeout: 5000
  })

  // 2.axios的拦截器
  // 2.1.请求拦截的作用
  instance.interceptors.request.use(config => {
    return config
  }, err => {
    // console.log(err);
  })

  // 2.2.响应拦截
  instance.interceptors.response.use(res => {
    return res.data
  }, err => {
    console.log(err);
  })

  // 3.发送真正的网络请求
  return instance(config)
}

4、页面请求接口eg:home.js

import {request} from './request';

export function banner(){
    return request({
        url:'/home/banner'
    })
}

5、home.vue代码如下

<script>
import {banner} from "network/home";

export default {
  name: "home",
  data() {
    return {
      banners: [],
    };
  },
  created() {
    banner().then(res => {
      console.log(res);
      this.banners = res;
    })
  }
};
</script>

相关文章

网友评论

      本文标题:moke.js在vue中的使用

      本文链接:https://www.haomeiwen.com/subject/niacuhtx.html