vue项目使用mockjs具体步骤

vue项目使用mockjs具体步骤

  1. 在项目中安装 mockjs 和 axios
npm install --save-dev mockjs
npm install --save axios
  1. 在 api 目录下新建 request.js 和需要用到的 getMockData.js 文件

request.js

import axios from 'axios'
const service = axios.create({
  baseURL : "http://localhost:8080",
})
export default service

getMockData.js

import axios from '../request'
//数据列表接口
export const getList = () => axios.get("/list")
  1. 在 src 目录下,配置接口详情,新建 mock 文件夹,创建 mockServer.js 文件
import Mock from 'mockjs'
//import data from './data.json'

Mock.mock('http://localhost:8080/list', {
  code: 0, data:
  {
    'data|1000': [
      {  
        id: '@id',//随机id
        name: '@name',//随机名称
        nickName: '@last',//随机昵称
        phone: /^1[34578]\d{9}$/,//随机电话号码
        'age|11-99': 1,//年龄
        address: '@county(true)',//随机地址
        email: '@email',//随机邮箱
        isMale: '@boolean',//随机性别
        createTime: '@datetime',//创建时间
        avatar() {
          //用户头像
          return Mock.Random.image('100×100', Mock.Random.color(), '#757575', 'png', this.nickName)
        }
      }
    ]
  }

})

  1. 在 main.js 中导入 mockServer
import './mock/mockServer'
  1. 预览页面获取数据后的效果
<template>
 <div>
  <el-table :data="tableData" style="width: 600px;margin: 0 auto">
   <el-table-column label="随机ID" width="200">
    <template slot-scope="scope">
     <i class="el-icon-time"></i>
     <span style="margin-left: 10px">{{ scope.row.id }}</span>
    </template>
   </el-table-column>
   <el-table-column label="姓名" width="180">
    <template slot-scope="scope">
     <el-popover trigger="hover" placement="top">
      <p>姓名: {{ scope.row.name }}</p>
      <p>住址: {{ scope.row.address }}</p>
      <div slot="reference" class="name-wrapper">
       <el-tag size="medium">{{ scope.row.name }}</el-tag>
      </div>
      <p>邮箱: {{ scope.row.email }}</p>
      <p>性别: {{ scope.row.isMale }}</p>
      <p>昵称: {{ scope.row.nickName }}</p>
      <p>手机号: {{ scope.row.phone }}</p>
      <p>头像:</p>
     </el-popover>
    </template>
   </el-table-column>
   <el-table-column label="操作">
    <template slot-scope="scope">
     <el-button size="mini" @click="handleEdit(scope.$index, scope.row)"
      >编辑</el-button
     >
     <el-button
      size="mini"
      type="danger"
      @click="handleDelete(scope.$index, scope.row)"
      >删除</el-button
     >
    </template>
   </el-table-column>
  </el-table>
 </div>
</template>

<script>
import { getList } from "../../api/getData";
export default {
 data() {
  return {
   tableData: [
    //  {
    //   date: "2016-05-02",
    //   name: "王小虎",
    //   address: "上海市普陀区金沙江路 1518 弄",
    //  },
    //  {
    //   date: "2016-05-04",
    //   name: "王小虎",
    //   address: "上海市普陀区金沙江路 1517 弄",
    //  },
    //  {
    //   date: "2016-05-01",
    //   name: "王小虎",
    //   address: "上海市普陀区金沙江路 1519 弄",
    //  },
    //  {
    //   date: "2016-05-03",
    //   name: "王小虎",
    //   address: "上海市普陀区金沙江路 1516 弄",
    //  },
   ],
  };
 },
 methods: {
  handleEdit(index, row) {
   console.log(index, row);
  },
  handleDelete(index, row) {
   console.log(index, row);
  },

  async getMockList() {
   try {
    const result = await getList();
    //console.log(result);
    if (result.data.code == 0) {
     this.tableData = result.data.data.data;
    }
    //console.log(result.data.data.data);
   } catch (error) {
    console.log(error);
   }
  },
 },

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

};
</script>

在这里插入图片描述

特别注意

  1. 需要将接口返回的数据 console.log 打印后,才能从控制台看见数据,直接在 network 是看不到请求的接口的

  2. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZBJD0iPq-1688439771975)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230704093956265.png)]

Vue3中,Mock.js是一个强大的JavaScript模拟数据库,常用于单元测试或者开发环境中的数据模拟。它可以帮助你在运行时动态生成虚拟的数据,避免直接从服务器获取真实数据,从而加快开发和测试的速度。以下是如何在Vue3项目使用Mock.js的基本步骤: 1. **安装Mock.js**: 在项目中安装Mock.js,你可以使用npm或yarn: ```bash npm install mockjs --save-dev # 或者 yarn add mockjs --dev ``` 2. **创建数据模拟**: 在你的`src`目录下创建一个mock文件(如`mock/api.js`),定义你所需的API接口及返回数据: ```javascript import Mock from 'mockjs'; export const mockData = { list: Mock.mock({ 'status': 200, 'data': [ { 'id': '@integer(1, 100)', 'name': '@name' }, { 'id': '@integer(1, 100)', 'name': '@name' }, ... // 随机生成数据 ] }), detail: Mock.mock({ 'status': 200, 'data': { id: '@integer(1, 100)', name: '@name', description: '@paragraph' } }) }; ``` 3. **在组件中使用**: 在需要模拟数据的地方,导入并调用mock数据。例如,在一个列表组件的`data`方法中: ```javascript import { mockData } from '@/mock/api'; export default { data() { return { items: mockData.list.data }; }, // ... }; ``` 4. **在测试环境中使用**: 在单元测试中,你也可以使用Mock.js来替换真实的API调用。例如,如果你使用的是Vue Test Utils,可以在`setup`方法中设置: ```javascript import { shallowMount } from '@vue/test-utils'; import MyComponent from '@/components/MyComponent'; test('mocked API call', async () => { // 在测试中使用Mock.js global.fetch = jest.fn(() => Promise.resolve({ json: () => Promise.resolve(mockData.detail), }) ); const wrapper = shallowMount(MyComponent); // ... });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值