Mockjs在vue中的使用

在这里插入图片描述

安装相关依赖

yarn add axios -S
yarn add mockjs -D
yarn add json5 -D

测试Mockjs

新建mock文件夹,新建testMock.js文件

const Mock = require('mockjs')

// 随机生成id
// let id = Mock.mock('@id')
// console.log(id)

// 模拟一个对象
let obj = Mock.mock({
  // 加不加括号都可以
  // 随机生成id
  id: '@id()',
  // 随机生成中文名字
  username: '@cname()',
  // 随机生成日期
  date: '@date()',
  // 生成图片 Random.image( size, background, foreground, format, text )
  avatar: "@image('200x200','#50B347','#fff','avatar')",
  // 描述
  desc: '@paragraph()',
  // IP地址
  ip: '@ip()',
  // email
  email: '@email()',
})
console.log(obj)

json文件中如果说存在注释文件和编辑器都会报错,我们采用json5格式来让json格式可以存在注释

安装JSON5 syntax插件

引入JSON5库来解析JSON5格式

在mock文件夹下,新建testJSON5.js

const fs = require('fs')
const path = require('path')
const JSON5 = require('json5')

var json = fs.readFileSync(path.join(__dirname, './userInfo.json5'), 'utf-8')
// 将json转换为对象
var obj = JSON5.parse(json)
console.log(obj)

Mock与Vue-cli结合

是否开启Mock

在项目根路径新建.env.development文件

MOCK = true   // 如果有后台接口了就改为false

在mock文件夹下,新建index.js

const fs = require('fs')
const path = require('path')
const Mock = require('mockjs')
const JSON5 = require('json5')

// 读取json文件
function getJsonFile(filePath) {
  // 读取指定json文件
  var json = fs.readFileSync(path.resolve(__dirname, filePath), 'utf-8')
  // 解析并返回
  return JSON5.parse(json)
}

// 返回一个函数
module.exports = function (devServer) {
  if (process.env.Mock == 'true') {
    // 监听http请求
    devServer.app.get('/user/userInfo', function (rep, res) {
      // 每次响应请求时读取mock data的json文件
      // getJsonFile方法定义了如何读取json文件并解析成数据对象
      var json = getJsonFile('./userInfo.json5')
      // 将json传入Mock.mock方法中,生成的数据返回给浏览器
      res.json(Mock.mock(json))
    })
  }
}

在vue.config.js配置(不同版本配置写法不一样)

Vue中使用Mock,解决因webpack高版本出现的vue.config.js配置问题:options has an unknown property ‘before‘._liuyi008的博客-CSDN博客_mockjs vue webpack

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  devServer: {
    onBeforeSetupMiddleware: require('./src/mock/index.js')  //引入mock.js
  }
})

发起axios请求

<script>
import axios from 'axios'
export default {
  name: 'App',
  mounted() {
    axios.get('/user/userInfo').then(res => {
      console.log(res)
    }).catch(err => {
      console.log(err)
    })
  }
}
</script>

在这里插入图片描述
Mock.js具体使用语法:

Mock.js

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FG.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值