Vue mockjs编写假数据并请求获取实现流程

yizhihongxing

Vue MockJS是一款用于前端mock数据的工具。其可以模拟请求API返回假数据,用于前端开发时进行数据调试、测试。本文将详细介绍Vue MockJS编写假数据并请求获取的实现流程。

1. 安装Vue MockJS

在使用Vue MockJS之前,需要确保在项目中已经安装了Vue,接着可以通过npm或yarn来安装Vue MockJS。

# 使用npm进行安装
npm install mockjs --save-dev

# 或者使用yarn进行安装
yarn add mockjs --dev

2. 编写假数据

在编写假数据之前,需要了解一些常用的MockJS语法,例如:

  • @string: 随机生成字符串
  • @number: 随机生成数字
  • @boolean: 随机生成布尔值
  • @date: 随机生成日期
  • @image: 随机生成图片
  • @paragraph: 随机生成文本
  • @cname: 随机生成中文名字
  • @url: 随机生成URL

在对假数据格式有了一定了解之后,可以开始编写假数据,例如:

// mockjs.js

import Mock from 'mockjs';

Mock.mock('/api/login', 'post', {
  'code': 200,
  'msg': '登录成功',
  'data': {
    'nickname': '@cname',
    'avatar': '@image("200x200")',
    'token': '@string(32)'
  }
});

上述代码定义了一个POST类型的API,当请求路径为/api/login时,返回如下JSON数据:

{
  "code": 200,
  "msg": "登录成功",
  "data": {
    "nickname": "张三",
    "avatar": "https://loremflickr.com/200/200",
    "token": "hHzHWMMYwwi56tmgWdeRQDGT04EZfT8o"
  }
}

在这个假数据中,@cname表示生成中文名字,@image("200x200")表示生成200x200大小的随机图片,@string(32)表示生成32位长度的随机字符串。

3. 发送AJAX请求获取假数据

使用Vue MockJS向后台请求数据的流程与正常请求数据的流程相同,只是前端需要手动拦截请求,然后使用MockJS返回预设数据。具体实现如下:

// main.js

import Vue from 'vue';
import axios from 'axios';
import Mock from 'mockjs';
import './mockjs.js';

Vue.prototype.$http = axios;

Mock.setup({
  timeout: 300
});

Vue.prototype.$mock = (url, data) => {
  return new Promise((resolve, reject) => {
    Mock.mock(url, data);
    axios.post(url, {}).then(res => {
      resolve(res.data);
    }).catch(err => {
      reject(err);
    });
  });
};

在上述代码中,我们添加了一个$mock方法用于发起AJAX请求获取假数据。该方法的实现如下:

  1. 使用MockJS拦截请求,并返回预设数据。
  2. 发起一个POST类型的AJAX请求,调用后端API。
  3. 在请求结果返回时,使用Promise将数据返回给调用者。

使用方法如下:

// UserInfo.vue

export default {
  mounted() {
    this.$mock('/api/login', {}).then(res => {
      console.log(res);
    }).catch(err => {
      console.log(err);
    });
  }
};

在上述代码中,我们在UserInfo.vue组件mounted钩子函数中,模拟了一次登录请求,并将解析结果打印到控制台。

4. 示例应用

在这里,我们建立一个假的留言板应用。使用Vue MockJS实现向留言板提交留言、获取留言列表的假数据。

完整代码如下:

// main.js

import Vue from 'vue';
import axios from 'axios';
import Mock from 'mockjs';
import './mockjs.js';

Vue.prototype.$http = axios;

Mock.setup({
  timeout: 300
});

Vue.prototype.$mock = (url, data) => {
  return new Promise((resolve, reject) => {
    Mock.mock(url, data);
    axios.post(url, {}).then(res => {
      resolve(res.data);
    }).catch(err => {
      reject(err);
    });
  });
};

//App.vue

<template>
  <div class="app">
    <h1>留言板</h1>

    <form @submit.prevent="handleSubmit">
      <div class="form-group">
        <label for="username">名字</label>
        <input id="username" type="text" class="form-control" v-model="username" required>
      </div>

      <div class="form-group">
        <label for="content">内容</label>
        <textarea id="content" class="form-control" v-model="content" required></textarea>
      </div>

      <button type="submit" class="btn btn-primary">提交留言</button>
    </form>

    <hr>

    <h2>留言列表</h2>

    <ul class="list-group">
      <li class="list-group-item" v-for="message in messages" :key="message.id">
        <h3>{{ message.username }}</h3>
        <p>{{ message.content }}</p>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      content: '',
      messages: [],
    };
  },

  mounted() {
    this.getMessages();
  },

  methods: {
    handleSubmit() {
      this.$mock('/api/messages', {
        'code': 200,
        'msg': '添加留言成功',
        'data': {
          'id': '@increment',
          'username': this.username,
          'content': this.content,
          'datetime': '@date'
        }
      }).then(() => {
        this.getMessages();
      }).catch((err) => {
        console.log(err);
      });
    },

    getMessages() {
      this.$mock('/api/messages', {
        'code': 200,
        'msg': '获取留言列表成功',
        'data|5-10': [{
          'id': '@increment',
          'username': '@cname',
          'content': '@paragraph(2)',
          'datetime': '@date'
        }]
      }).then((res) => {
        this.messages = res.data;
      }).catch((err) => {
        console.log(err);
      });
    },
  },
};
</script>

在上述代码中,我们使用$mock方法模拟了后端API,分别是提交留言和获取留言列表。同时,我们使用Vue的双向数据绑定机制实现向留言板提交留言,并在获取留言列表成功后展示留言信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue mockjs编写假数据并请求获取实现流程 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue.js或js实现中文A-Z排序的方法

    我来给你讲一下“vue.js或js实现中文A-Z排序的方法”的完整攻略。 1. 安装第三方库 pinyin 在 Vue.js 或 js 中实现中文 A-Z 排序需要用到拼音转换,我们可以使用第三方库 pinyin。可以在终端中运行以下指令进行安装: npm install pinyin –save 2. 调用 pinyin 库进行排序 2.1 Vue.js…

    Vue 2023年5月28日
    00
  • 详解.NET Core中的数据保护组件

    详解.NET Core中的数据保护组件 什么是数据保护组件? 数据保护是.NET Core中的一种组件,用于保护应用程序中的敏感数据。在ASP.NET Core中,最常见的使用场景是保护cookie,其它应用场景还包括数据加密、命令行参数加密等等。数据保护组件使用类似于加密解密器的方式,将明文数据转换为不可逆的数据,从而保证数据的安全性。数据保护组件常见的加…

    Vue 2023年5月28日
    00
  • Vue3从0搭建Vite打包组件库使用详解

    下面我将详细讲解“Vue3从0搭建Vite打包组件库使用详解”的完整攻略。 如何搭建 步骤一:安装Vue CLI 首先安装 Vue CLI。打开终端并运行以下命令: npm install -g @vue/cli 步骤二:创建Vue项目 生成一个新的Vue项目,安装 Vue Router 和 Vuex。进入项目路径,执行以下命令: vue create my…

    Vue 2023年5月29日
    00
  • 如何在Vue中使localStorage具有响应式(思想实验)

    如何在Vue中使localStorage具有响应式(思想实验): Vue提供内置的响应式系统,但是localStorage并不支持响应式。我们可以通过利用Vue的响应式系统来将LocalStorage具有响应式。 步骤: 1.创建Vue组件 首先,我们需要创建一个Vue组件并在数据中引入存储在localStorage中的值。在这里,我们将使用localSto…

    Vue 2023年5月27日
    00
  • vue-router传递参数的几种方式实例详解

    下面我来详细讲解“vue-router传递参数的几种方式实例详解”的完整攻略。 1. 传递参数的基本方式 在vue-router中,我们可以通过在router-link组件的to属性中传递参数,然后在目标组件中通过$route.params获取参数。具体步骤如下: 设置router-link组件的to属性,传递参数。例如: // 在组件中使用router-l…

    Vue 2023年5月27日
    00
  • vue.js中导出Excel表格的案例分析

    下面我将为您详细讲解“vue.js中导出Excel表格的案例分析”的完整攻略。 一、前置知识 要实现vue.js中导出Excel表格的功能,需要先掌握以下技能: HTML基础:了解HTML表格、表单等基本结构和属性,会使用<table>、<tr>、<td>等标签; Vue.js基础:了解Vue.js的指令和组件,特别是v-…

    Vue 2023年5月27日
    00
  • Vue学习之组件用法实例详解

    Vue学习之组件用法实例详解 1. 组件的定义与引用 组件是一种抽象的概念,它可以将一些共用的逻辑和界面封装起来,形成一个独立的组件,供其他部分进行复用。在Vue中,组件既可以全局注册,也可以按需注册。 1.1 全局注册组件 全局注册组件是指在Vue实例化之前定义好组件,这样后面的任何Vue实例都可以使用这个组件。 Vue.component(‘compon…

    Vue 2023年5月27日
    00
  • vue 实现模糊检索并根据其他字符的首字母顺序排列

    实现模糊检索并根据其他字符的首字母顺序排列是前端开发中比较常见的需求之一,在 Vue 中也有很好的实现方式。 1.实现模糊检索功能 实现模糊检索的核心点是在数据源上进行筛选。假设我们有一个表格数据源: [ { name: ‘张三’, age: 21 }, { name: ‘李四’, age: 22 }, { name: ‘王五’, age: 23 }, { …

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部