vue-cli项目使用mock数据的方法(借助express)

以下是详细讲解“vue-cli项目使用mock数据的方法(借助express)”的完整攻略。

前置知识

在讲解具体的实现方法之前,需要先了解一些前置知识:

  • vue-cli:Vue.js 的官方脚手架,可用于快速搭建 Vue.js 项目
  • mock.js:一个用于生成随机数据的库,可生成各种类型的数据
  • express.js:一个用于搭建 web 服务器的库,可用于处理 HTTP 请求和响应
  • axios:一个用于发送 HTTP 请求的库,可用于获取来自服务器端的数据

实现步骤

下面是使用 express.js 实现 vue-cli 项目中使用 mock.js 的具体步骤。

步骤一:安装依赖

在 vue-cli 项目的根目录下打开终端,输入以下命令安装依赖:

npm install --save-dev express body-parser
npm install --save-dev mockjs
  • express:用于搭建 web 服务器
  • body-parser:用于解析 HTTP 请求体中的 JSON 数据
  • mockjs:用于生成随机数据

步骤二:创建 mock 数据

在项目的根目录下创建一个名为 “mock” 的目录,并在该目录下创建一个名为 “index.js” 的文件。在该文件中编写 mock 数据,示例如下:

// mock/index.js

const Mock = require('mockjs');

const data = Mock.mock({
  'list|10': [{
    'id|+1': 1,
    'name': '@cname',
    'age|18-30': 20
  }]
});

module.exports = data;

以上代码中,我们使用 mockjs 生成了一个包含 10 个元素的数组,每个元素包含 id、name 和 age 三个属性,其中 name 属性使用了 @cname 表示生成中文名字,age 属性使用了 18-30 表示生成 18 到 30 岁之间的随机数。

步骤三:创建 express 服务器

在项目的根目录下创建一个名为 “server.js” 的文件,并在该文件中编写如下代码:

// server.js

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

const data = require('./mock');

app.use(bodyParser.json());

app.get('/api/data', (req, res) => {
  console.log('GET /api/data');
  res.json(data);
});

const server = app.listen(3000, () => {
  console.log('Server is running at http://localhost:3000');
});

module.exports = server;

以上代码中,我们使用 express 搭建了一个简单的 web 服务器,对于发送到 “/api/data” 的 GET 请求,服务器将返回之前生成的 mock 数据。

步骤四:在 Vue 组件中使用 axios 获取数据

在我们已经可以响应 GET 请求的服务器的基础上,我们需要在 Vue 组件中使用 axios 发送 GET 请求,示例如下:

// MyComponent.vue

<template>
  <div>
    <ul>
      <li v-for="item in list" :key="item.id">
        {{ item.id }} - {{ item.name }} - {{ item.age }}
      </li>
    </ul>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      list: []
    };
  },
  mounted() {
    axios.get('/api/data')
      .then(response => {
        this.list = response.data.list;
      })
      .catch(error => {
        console.log(error);
      });
  }
};
</script>

以上代码中,我们使用了 axios 发送了一个 GET 请求,请求的 URL 是 “/api/data”,并在请求成功后将返回的数据赋值给 Vue 组件实例的 list 属性。

示例

以下是两个示例,分别针对使用 vue-cli 2.x 和 vue-cli 3.x 创建的项目。

示例一:Vue-cli 2.x

在使用 vue-cli 2.x 创建的项目中,我们需要在 webpack 配置文件中配置开发服务器,并使其支持代理功能。

  1. 安装依赖

进入项目根目录,打开命令行窗口,执行以下命令安装依赖:

npm i express body-parser -D
npm i mockjs -S
  1. 创建 mock 数据

在项目根目录下创建一个名为 “mock.js” 的文件,并输入以下代码:

// mock.js

const Mock = require('mockjs');

const data = Mock.mock({
  'list|10': [{
    'id|+1': 1,
    'name': '@cname',
    'age|18-30': 20
  }]
});

module.exports = data;

以上代码中,我们使用了 mockjs 生成了一个包含 10 个元素的数组,每个元素包含 id、name 和 age 三个属性,其中 name 属性使用了 @cname 表示生成中文名字,age 属性使用了 18-30 表示生成 18 到 30 岁之间的随机数。

  1. 创建服务器

在项目根目录下创建一个名为 “server.js” 的文件,并输入以下代码:

// server.js

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

const data = require('./mock');

app.use(bodyParser.json());

app.get('/api/data', (req, res) => {
  console.log('GET /api/data');
  res.json(data);
});

const server = app.listen(3000, () => {
  console.log('Server is running at http://localhost:3000');
});

module.exports = server;

以上代码中,我们使用了 express 搭建了一个简单的 web 服务器,对于发送到 “/api/data” 的 GET 请求,服务器将返回之前生成的 mock 数据。

  1. 修改 webpack 配置

打开 webpack.dev.conf.js 文件,找到 devServer.proxy 属性,并在该属性中添加以下代码:

// webpack.dev.conf.js

module.exports = {
  // ... 省略其余配置
  devServer: {
    // ... 省略其余配置
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
  // ... 省略其余配置
}

以上配置中,我们使用了 devServer.proxy 属性,并将所有以 “/api” 开头的请求转发到之前启动的 web 服务器。

  1. 在组件中使用 axios 获取数据

在需要使用 mock 数据的 Vue 组件中,我们可以使用以下代码获取数据:

// MyComponent.vue

<template>
  <div>
    <ul>
      <li v-for="item in list" :key="item.id">
        {{ item.id }} - {{ item.name }} - {{ item.age }}
      </li>
    </ul>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      list: []
    };
  },
  mounted() {
    axios.get('/api/data')
      .then(response => {
        this.list = response.data.list;
      })
      .catch(error => {
        console.log(error);
      });
  }
};
</script>

以上代码中,我们使用了 axios 发送了一个 GET 请求,并将其 URL 设置为 “/api/data”,在请求成功后将返回的数据赋值给 Vue 组件实例的 list 属性。

示例二:Vue-cli 3.x

在使用 vue-cli 3.x 创建的项目中,我们可以使用 vue.config.js 文件来配置 webpack。

  1. 安装依赖

进入项目根目录,打开命令行窗口,执行以下命令安装依赖:

npm i express body-parser -D
npm i mockjs -S
  1. 创建 mock 数据

在项目根目录下创建一个名为 “mock.js” 的文件,并输入以下代码:

// mock.js

const Mock = require('mockjs');

const data = Mock.mock({
  'list|10': [{
    'id|+1': 1,
    'name': '@cname',
    'age|18-30': 20
  }]
});

module.exports = data;

以上代码中,我们使用了 mockjs 生成了一个包含 10 个元素的数组,每个元素包含 id、name 和 age 三个属性,其中 name 属性使用了 @cname 表示生成中文名字,age 属性使用了 18-30 表示生成 18 到 30 岁之间的随机数。

  1. 创建服务器

在项目根目录下创建一个名为 “server.js” 的文件,并输入以下代码:

// server.js

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

const data = require('./mock');

app.use(bodyParser.json());

app.get('/api/data', (req, res) => {
  console.log('GET /api/data');
  res.json(data);
});

const server = app.listen(3000, () => {
  console.log('Server is running at http://localhost:3000');
});

module.exports = server;

以上代码中,我们使用了 express 搭建了一个简单的 web 服务器,对于发送到 “/api/data” 的 GET 请求,服务器将返回之前生成的 mock 数据。

  1. 修改 vue.config.js 配置

在项目根目录下创建一个名为 “vue.config.js” 的文件,并输入以下代码:

// vue.config.js

module.exports = {
  devServer: {
    before(app) {
      app.use(bodyParser.json());

      app.get('/api/data', (req, res) => {
        console.log('GET /api/data');
        res.json(require('./mock'));
      });
    }
  }
};

以上代码中,我们使用了 vue.config.js 文件,并在其中编辑了一个 “before” 钩子,在该钩子中,我们使用了 express 搭建了一个简单的 web 服务器,对于发送到 “/api/data” 的 GET 请求,服务器将返回之前生成的 mock 数据。

  1. 在组件中使用 axios 获取数据

在需要使用 mock 数据的 Vue 组件中,我们可以使用以下代码获取数据:

// MyComponent.vue

<template>
  <div>
    <ul>
      <li v-for="item in list" :key="item.id">
        {{ item.id }} - {{ item.name }} - {{ item.age }}
      </li>
    </ul>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      list: []
    };
  },
  mounted() {
    axios.get('/api/data')
      .then(response => {
        this.list = response.data.list;
      })
      .catch(error => {
        console.log(error);
      });
  }
};
</script>

以上代码中,我们使用了 axios 发送了一个 GET 请求,并将其 URL 设置为 “/api/data”,在请求成功后将返回的数据赋值给 Vue 组件实例的 list 属性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue-cli项目使用mock数据的方法(借助express) - Python技术站

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

相关文章

  • element如何初始化组件功能详解

    在使用Vue.js开发应用时,我们通常会使用Element UI这样的第三方UI组件库来快速搭建和设计我们的应用。Element UI提供了很多常用的UI组件和工具,如表单、按钮、弹窗、分页、图表等,以及主题定制等功能,方便了我们进行快速开发。但在使用之前,需要了解Element组件的初始化。 首先,我们需要安装Element UI,使用npm安装命令: n…

    Vue 2023年5月28日
    00
  • Vite开发环境搭建详解

    Vite开发环境搭建详解 Vite是一款现代化的前端开发工具,它可以快速创建和启动本地开发服务器,具有快速冷重载、简单的配置和高效的构建等特点。本篇文章将详细讲解如何搭建Vite开发环境。 环境安装与配置 安装Node.js Vite依赖Node.js运行环境,首先需要在官网(https://nodejs.org/)下载Node.js安装包进行安装。安装完成…

    Vue 2023年5月27日
    00
  • Vue.js展示AJAX数据简单示例讲解

    下面我将为你讲解如何在Vue.js中展示AJAX数据的完整攻略。 1. 起步 首先,我们需要安装npm包管理器,并使用它来安装Vue.js: npm install vue 安装完成后,在HTML文件中引入Vue.js: <script src="https://cdn.jsdelivr.net/npm/vue"></s…

    Vue 2023年5月28日
    00
  • Vue2中使用axios的3种方法实例总结

    当使用Vue2构建前端应用时,通常需要从后端获取数据。Axios是一个流行的JavaScript库,可用于发送HTTP请求和处理响应。在Vue2中,可以使用Axios来轻松地获取数据。下面是三种方法来在Vue2中使用Axios的总结: 方法一:以Vue原型的方式调用Axios 在main.js文件中引入Axios,然后将其设置为Vue的原型属性。这样一来,在…

    Vue 2023年5月28日
    00
  • mpvue开发音频类小程序踩坑和建议详解

    mpvue开发音频类小程序踩坑和建议详解 1. 前言 mpvue 是一个基于 Vue.js 核心的高性能小程序开发框架。它传承了 Vue.js 的语法风格和开发习惯,在小程序开发中尽可能的减少了学习成本和上手难度。同时,mpvue 利用 Webpack 和 Vue.js 的自身特性,将组件和业务逻辑代码进行分离抽离,维护更加方便易用。 在开发小程序中,音频类…

    Vue 2023年5月27日
    00
  • 如何在Vue中使用debouce防抖函数

    当我们在Vue组件中使用一些高频操作时,例如input事件的实时搜索,我们会发现输入一个字母就会发送一次请求,导致不必要的请求和资源浪费,这时候可以通过引入debounce防抖函数进行优化。下面是关于在Vue中使用debounce防抖函数的完整攻略: 1. 安装lodash debounce函数通常是使用lodash库中的_.debounce函数来实现的,因…

    Vue 2023年5月28日
    00
  • 总结vue映射的方法与混入的使用过程

    Vue.js 是一个流行的前端框架,拥有方便的数据响应式系统和丰富的生命周期。Vue.js 不仅提供了一种方便的组件方式来搭建界面,还提供了许多简化代码的特性,如映射和混入。 Vue映射 什么是映射? Vue映射是一种用于将Vue组件的属性或方法映射到另一个对象的技术。这样做的主要目的是为了方便组件与外界进行交互和相互配合。 映射使用方法 Vue的映射方法包…

    Vue 2023年5月28日
    00
  • vue2.0实现前端星星评分功能组件实例代码

    下面我将为你详细讲解“vue2.0实现前端星星评分功能组件实例代码”的完整攻略。 1. 安装依赖 首先,我们需要在项目中安装vue-router,并且在前端界面中安装vue2-star-rating这个插件。在终端中输入以下命令: npm install vue-router npm install vue2-star-rating 2. 路由配置 接下来,…

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