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

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日

相关文章

  • 简单设置el-date-picker的默认当前时间问题

    下面是详细讲解如何设置 el-date-picker 的默认当前时间的攻略: 1.需求分析 当我们使用 el-date-picker 来选择日期时,默认展示的日期为当前日期,这在大部分场景下都是符合要求的。但有时候我们需要默认选中其他日期,比如一个从某一具体日期开始的查询页面。 在这种情况下,我们就需要设置 el-date-picker 的默认当前时间,让它…

    Vue 2023年5月29日
    00
  • vue-resource + json-server模拟数据的方法

    让我们来详细讲解“vue-resource + json-server模拟数据的方法”完整攻略。 首先,我们需要先了解一下Vue.js的两个插件:vue-resource和json-server。 vue-resource是Vue.js官方提供的一个轻量级的ajax库,用于发送http请求和处理响应数据。使用该库可以方便地处理跨域请求、请求头设置和拦截器等常…

    Vue 2023年5月28日
    00
  • Vue3后台管理系统之创建和配置项目

    下面是对“Vue3后台管理系统之创建和配置项目”的完整攻略: 一、安装Node.js和Vue CLI 在官网https://nodejs.org/下载并安装最新版的Node.js。 打开终端或命令行,运行以下命令安装Vue CLI: npm install -g @vue/cli 验证Vue CLI是否安装成功,运行以下命令: vue –version 如…

    Vue 2023年5月28日
    00
  • 安装多版本Vue-CLI的实现方法

    请注意以下完整攻略,包含了安装多版本Vue-CLI的实现方法和两条示例说明: 1. 安装nvm nvm 是 Node.js 的版本管理器,可以方便地在本机多版本 Node.js 之间切换。我们可以通过安装 nvm 来实现多版本 Vue-CLI 的安装。先来安装 nvm,可以前往 nvm 的 GitHub 仓库 下载脚本进行安装。 $ curl -o- htt…

    Vue 2023年5月28日
    00
  • Vue的方法和属性案例详解

    非常感谢您对我的提问,下面是“Vue的方法和属性案例详解”的完整攻略。在这篇攻略中,我将分为以下几个部分来讲解: Vue实例的方法和属性介绍 Vue实例的方法和属性示例说明 Vue组件的方法和属性介绍 Vue组件的方法和属性示例说明 1. Vue实例的方法和属性介绍 在Vue中,每个Vue实例都具有一些可用的方法和属性。下面是一些常用的Vue实例属性: $e…

    Vue 2023年5月27日
    00
  • 浅谈vue 单文件探索

    浅谈 Vue 单文件探索 什么是 Vue 单文件? 在介绍 Vue 单文件之前,我们需要先了解 Vue 单文件组件,简称为 Vue 组件。Vue 组件是 Vue.js 中一项重要的功能,用于将页面拆分成独立可复用的部分,并通过组合这些部分来构建复杂的应用程序。 而 Vue 单文件则是对 Vue 组件进行组织和管理的方式。Vue 单文件使用 .vue 后缀名,…

    Vue 2023年5月28日
    00
  • vue实现列表的添加点击

    下面是关于如何使用Vue实现列表的添加点击的完整攻略。为了使内容更加易懂,我将分为以下几个部分进行讲解: Vue组件的创建 列表的初始化 实现添加点击功能 1. Vue组件的创建 首先,我们需要在Vue中创建一个组件用于显示列表,示例代码如下: <template> <div> <ul> <li v-for=&quo…

    Vue 2023年5月29日
    00
  • vue3如何实现挂载并使用axios

    当我们使用Vue3框架开发应用程序时,我们需要使用Axios实现数据通信。在Vue3中,Axios是一个可以在后台执行请求的JavaScript库。在本篇攻略中,我们将会介绍如何在Vue3中挂载及使用Axios。以下分为以下五个步骤: 安装Axios 在Vue3中使用Axios需要安装Axios。你可以通过npm或者yarn进行安装Axios: npm in…

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