[Vue]Mock 数据,多种方式

一、不启服务,mockjs模拟接口 [F12看不到网络请求]

基于vue2.x下测试通过。

1、安装mockjs

npm install mockjs --save-dev

2、在src目录中创建mock -> index.js

3、mock -> index.js文件中定义接口,填充数据

import Mock from 'mockjs'
// 接口地址
Mock.mock('/api/login', (req, res) => {
  return {
    data: [
      {username: 'zxc', password: '123456'}
    ]
  }
})

4、在main.js中导入mock->index.js文件

import '../src/mock'

5、在组件中使用

import axios from 'axios'
export default {
  name: 'test',
  data() {
    return {
      userId: 666,
      token: '',
    }
  },
  created() {
    // mockjs中定义的接口地址
    axios.get('/api/login').then(res => {
      console.log(res)
    })
    axios({
      method: 'post',
      url: '/getDataList',
      data:{    //这里是发送给后台的数据
        userId: this.userId,
        token: this.token,
      }
    }).then((response) => {          //这里使用了ES6的语法
      console.log(response)       //请求成功返回的数据
    }).catch((error) =>
      console.log(error)       //请求失败返回的数据
    ) 
  }
}

 6、浏览器控制台查看数据

 7、基本使用方法

import Mock from 'mockjs'
let Random = Mock.Random
// 1、Mock.mock
// url: 表示需要拦截的 URL,可以是 URL 字符串或 URL 正则
// type: 表示需要拦截的 Ajax 请求类型。例如 GET、POST、PUT、DELETE 等。
// template: 表示数据模板,可以是对象或字符串。例如 { 'data|1-10':[{}] }、'@EMAIL'。
// function : 表示用于生成响应数据的函数。

// 1.1、url, template
Mock.mock('/api/user/list', {
  'array|10': [
    {
      name: 'zxc',
      password: '*****',
      // Mock.Random 的方法在数据模板中称为『占位符』,书写格式为 @占位符(参数 [, 参数]) 。
      email: '@email',
      age: '@integer(1, 100)',
      address: '@county(true)'
    }
  ]
})
// 1.2、url, function
Mock.mock('/api/login', (req, res) => {
  // 如果请求接口返回数据,那么可以在这里处理
  // let data = JSON.parse(JSON.stringify(res))
  // data.forEach((value, index) => {
  //   if (value === 'zxc') {
  //     value = 'hello' + value
  //   }
  // })
  // return {
  //   data
  // }
})
// 1.3、url, type, template
Mock.mock('/api/register', 'post', {
  'string|10': 'zxc'
})
// 1.4、url, type, function
Mock.mock('/api/register', 'post', (req, res) => {
  return {
    username: 'zxc',
    // 使用随机生成
    address: Random.county(true)
  }
})

// 2、Mock.setup
// 指定被拦截的 Ajax 请求的响应时间,单位是毫秒。值可以是正整数,例如 400,表示 400 毫秒 后才会返回响应内容;也可以是横杠 '-' 风格的字符串,例如 '200-600',表示响应时间介于 200 和 600 毫秒之间
Mock.setup({
  timeout: 400
})

// 3、Mock.Random 随机生成数据
function setMsg(){
  let datalist= [];
  for (let i = 0; i < 10; i++) {
    let newData = {
      order: Random.natural(16),
      account:Random.name(),
      date: Random.date() + ' ' + Random.time() // Random.date()指示生成的日期字符串的格式,默认为yyyy-MM-dd;Random.time() 返回一个随机的时间字符串
    }
    datalist.push(newData)
  } 
  return {
    data: datalist
  }
}
const data1 = Mock.mock('/setMsg',setMsg)
const data = Mock.mock('/getDataList',getData2);

 官方文档:
http://mockjs.com

二、不启服务,mockjs模拟数据 [F12可看到网络请求]

1.编辑器安装JSON5扩展,(采用json5格式来让json格式可以存在注释)

2.新建mock文件夹 /userInfo.json5 文件 mock数据

{
    "error":0,//采用json5格式来让json格式可以存在注释
    "data":{
        "userid":"@id()", //随机生成id
        "username":"@cname()",//随机生成中文名
        "date":"@date()",//随机生成日期
        "avatar":"@image('200x200','red','#fff','avatar')",//生成图片
        "description":"@paragraph()",//描述
        "ip":"@ip()",//IP地址
        "email":"@email()",//email
    }
}

 3.在mock文件夹下,新建 index.js   引入mock的数据

const fs = require('fs');
const path = require('path');
const Mock = require('mockjs');//mockjs 导入依赖模块
const JSON5 = require('json5');
//读取json文件
function getJsonFile(filePath) {
    //读取指定json文件
    let json = fs.readFileSync(path.resolve(__dirname,filePath), 'utf-8');
    //解析并返回
    return JSON5.parse(json);
}

//返回一个函数
module.exports = function(app){
 //if(process.env.MOCK == 'true'){
    //监听http请求
    app.get('/user/userinfo', function (rep, res) {
        //每次响应请求时读取mock data的json文件
        //getJsonFile方法定义了如何读取json文件并解析成数据对象
        let json = getJsonFile('./userInfo.json5'); // mock数据
        //将json传入 Mock.mock 方法中,生成的数据返回给浏览器
        res.json(Mock.mock(json));
    });
    app.post('/...mock的url',(req,res)=>{
        let json = getJsonFile('./...mock的json5数据');
    })
  //}
}

4.vue.config.js中添加配置

module.exports = {
  devServer: {
    before: require('./src/mock/index.js'),//引入mock/index.js 或者
    //bafter: require('./mock/mock-server.js'),
  }
}

 5.发送ajax请求测试数据

import axios from 'axios'
export default {   
	mounted() {
	    axios.get('/user/userinfo')
	    .then(res => {
	      console.log(res)
	    })
	    .catch(err => {
	      console.error(err); 
	    })
	}
} 

三、其它方式:

现在很多前端项目都是前后分离的模式,开发时比较依赖接口数据,或者跑路后回顾项目也比较依赖接口数据。如果搭建一套后台系统来模拟数据接口又费时费力,因此mock数据比较方便快捷。

网上很多mock数据的方式,大体分为几种:

1.使用mockjs,优点是配置简单,缺点是在控制台看不到请求.只能console查看数据.Mockjs参考

2.使用express服务,模拟接口服务.优点是自由度高,可配置各种情况,能看到请求。缺点是配置较多,开发时多起了一套服务。express参考

3.使用json-server,模拟接口服务.优点是自由度高,可配置各种情况,能看到请求。缺点是开发时多起了一套服务。json-server参考

1.安装npm
下载node.js,地址:https://nodejs.org/zh-cn/
2.安装json-server
安装命令:npm install json-server --g
3.使用
新增目录:d:\json,并新建json文件:data.json,运行:json-server --watch data.json。
指定端口运行,在该目录执行命令:
第一步:json-server --watch --port 5001 data.json     
   注意:对数据的格式,需要严格按照要求,比如:必须是{}包起来,然后配置数据源。
第二步:浏览器,访问地址:http://localhost:5001/students
   这里是操作数据源:students,对于json文件的students,一一对应的。

4.使用easy-mock工具,优点是成体系的独立mock工具,模拟后端接口。缺点是成本略高,独立于项目之外。

5.使用vuecli配置拦截axios请求,模拟数据.优点是配置简单,可以看到请求。本文也是记录介绍这种方法。

vuecli2版本的mock实现,网上有很多配置分享,vuecli3版本的配置方法。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue中建立mock数据可以通过使用Mock.js库来实现。首先,你需要在项目中安装Mock.js库。然后,你可以在项目的index.js文件中使用Mock.mock()方法来定义mock数据的格式。例如,你可以在index.js文件中添加以下代码来定义一个mock接口: ```javascript const Mock = require('mockjs'); Mock.mock('/user/userInfo', 'get', { 'name': '@cname', 'age|18-60': 0, 'gender|1': \['男', '女'\], 'email': '@email', 'address': '@county(true)', 'avatar': '@image(200x200)' }); ``` 上述代码定义了一个名为"/user/userInfo"的GET请求接口,返回的数据包括姓名、年龄、性别、邮箱、地址和头像。你可以根据需要自定义mock数据的字段和格式。 接下来,在需要使用mock数据Vue组件中,你可以使用axios库来获取mock数据。例如,在HelloWorld.vue组件中,你可以添加以下代码来获取mock数据: ```javascript import axios from 'axios'; export default { data() { return { userInfo: {} }; }, mounted() { this.getMockData(); }, methods: { getMockData() { axios.get('/user/userInfo') .then((res) => { this.userInfo = res.data; }) .catch(function(err){ console.log(err); }); } } } ``` 上述代码中,通过axios库发送GET请求到"/user/userInfo"接口,并将返回的数据赋值给组件的userInfo属性。 这样,你就可以在Vue中建立mock数据并在组件中使用了。 #### 引用[.reference_title] - *1* *2* *3* [vue项目 mock数据](https://blog.csdn.net/Feb_ruary/article/details/125934498)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值