在 vue 框架中使用 Mock 模拟后台数据

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

在前端开发的时候,在某些情况下后端接口没有准备好,但页面需要数据渲染来查看效果,此时可以使用 Mock 这个包来生成随机数据,方面前端获取数据渲染页面。


一、Mock 是什么?

生成随机数据,拦截 Ajax 请求。不需要改变现有代码,就可以拦截 Ajax 请求,返回随机数,让前端脱离了后端,可进行独立开发,;可生成的数据类型十分丰富,涵盖了随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等,模拟各种场景。

二、Mock 使用

1.Mock 基本使用

使用 npm install mockjs下载包

import Mock from mockjs // es6 语法

在 node 环境下可以使用下面代码
const Mock = require(mockjs)

1.1生成模拟数据的两种方法

方法一:数据模板 生成随机数

// 调用 Mock.mock() 方法生成随机数据
let data = Mock.mock({
          
   
	username|1-10: w,  // 随机生成 1-10 次 w 字符串
		num|1-30: 0   // 随机生成 1-30 之间的数字
	})
console.log(data)  // { username: wwwwwwww, num: 3 }

方法二:数据占位符 生成随机数

数据占位符使用
let data = Mock.mock(   {
          
   
  id: @id(), // @id() 随机生成 id
  name: @cname, // @cname 随机生成中文名字
  date: @date(yyyy-MM-dd), //@date(yyyy-MM-dd) 随机生成日期
  content: @paragraph(), // 随机生成描述
  email: @email(),// 随机生成邮箱
})

以上对常用的随机数据做了一个简单的介绍,更详细、更具体的方法建议查看链接: .

2.在 vue 中使用 Mock

2.1创建项目并导包

首先创建 vue 项目:Vue create demo,清空默认模板 安装 axios和mockjs两个包:npm install axios mockjs

2.2创建 mock 文件

src/mock/index.js 写入

import Mock from mockjs
// 监听对应的端口 api/userinfo
Mock.mock(api/userinfo, {
          
   
  id: @id(), // @id() 随机生成 id
  name: @cname, // @cname 随机生成中文名字
  date: @date(yyyy-MM-dd), //@date(yyyy-MM-dd) 随机生成日期
  content: @paragraph(), // 随机生成描述
  email: @email(),// 随机生成邮箱
})

在main.js文件代码如下

import Vue from vue
import App from ./App.vue
import axios from axios
import ./mock // 一定要在 mian.js 导入 mock 文件

axios.baseURL = http://localhost:9000  // 本项目的 localhost 和对应的端口号
Vue.prototype.$http = axios // 设置全局的 axios 方法

Vue.config.productionTip = false
new Vue({
          
   
  render: h => h(App),
}).$mount(#app)

在 App.vue中代码如下

<template>
  <div id="app">
    <button @click="getRandomData">随机生成数据</button>
   <h3>id:{
          
   {
          
    userinfo.id }}</h3>
    <div>姓名:{
          
   {
          
    userinfo.name }}</div>
    <br>
    <div>生日:{
          
   {
          
    userinfo.date }}</div>
    <br>
    <div>邮箱:{
          
   {
          
    userinfo.email }}</div>
    <br>
    <div>描述:{
          
   {
          
    userinfo.content }}</div>
  </div>
</template>

<script>
export default {
          
   
  name: app,
  data () {
          
   
    return {
          
   
      userinfo : {
          
   }
    }
  },
  methods: {
          
   
    getRandomData() {
          
   
      this.$http.get(api/userinfo).then(({
           
    data}) => {
          
   
      this.userinfo = data
    })
    }
  }
}
</script>

效果展示

点击按钮前。 点击按钮后,生成随机数据,每点击一次就可以生成新的随机数据。

经验分享 程序员 微信小程序 职场和发展