Vue项目使用mock数据的几种方式

简介: 《Vue实战》笔记

本文是基于vue/cli 3.0创建的项目进行讲解

首先我们来说一说vue/cli 3.0 与 2.0 的一些不同:

  1. 3.0 移除了 static 文件目录,新增了 public 目录,这个目录下的静态资源不会经过 webpack 的处理,会被直接拷贝,所以我们能够直接访问到该目录下的资源,静态数据(如json数据、图片等)需要存放在这里。

放在public目录下的静态资源可直接通过(http://localhost:8080/+ 文件名称)来访问,不需要在前面加一个/public路径

  1. 3.0 移除了 config、build 等配置目录,如果需要进行相关配置我们需要在根目录下创建 vue.config.js 进行配置。

方式一:使用mockjs插件实现本地mock数据

  1. 安装mockjs插件
npm i mockjs -D
  1. 在src目录下创建一个mock文件夹,在mock文件夹下创建一个index.js和一个data文件夹(用于存放项目需要的模拟数据)
.
├── src
│   ├── mock
│   │   └── data
│   │   │   └──  test.json
│   │   └── index.js 
.   .
  1. mock目录下的index.js示例如下:
const Mock = require('mockjs')
// 格式: Mock.mock( url, 'post'|'get' , 返回的数据)
Mock.mock('/api/test', 'get', require('./data/test.json'))
Mock.mock('/api/test2', 'post', require('./data/test2.json'))
  1. main.js入口文件中引入mock数据,不需要时,则注释掉
require('./mock') // 引入mock数据,不需要时,则注释掉
  1. 最后,在vue模板中使用即可
axios.get('/api/test')
.then(function(res){
 console.log(res);
})
.catch(function(err){
 console.log(err);
});

方式二:在public文件夹放mock数据(无需使用mockjs插件)

  1. public文件夹下创建一个mock文件夹,用来存放模拟数据的json文件
.
├── public
│   ├── mock
│   │   └── test.json 
.   .

放在public目录下的静态资源可直接通过(http://localhost:8080/ + 文件名称)来访问,不需要在前面加一个/public路径。

  1. vue.config.js里进行路径配置,如下:
module.exports = {
devServer: {
  proxy: {
    '/api': { // 代理接口
      target: 'http://localhost:8080',
      ws: true, // proxy websockets
      changeOrigin: true, // 是否开启跨域
      pathRewrite: { // 路径重写
        '^/api': '/mock'
      }
    }
  }
}
}
  1. devServer.proxy官方文档
  2. 最后,在vue模板中使用即可
axios.get('/api/test.json') // 注意这里需要.json后缀
.then(function(res){
 console.log(res);
})
.catch(function(err){
 console.log(err);
});

这方式貌似不支持post请求,有待研究。

方式三:前端本地启动一个nodejs服务,vue项目向nodejs服务请求mock数据

  1. 创建一个node项目(为了方便,本例直接在vue项目根目录创建,当然也可以是其它任何地方)
.
├── 项目根目录
│   └── serve.js
.   .
  1. serve.js示例
const http = require('http')
// url模块用于处理与解析 前端传给后台的URL,适用于get请求(不适用于post请求),详情参见文档
const urlLib = require('url')
http.createServer(function (req, res) {
 const urlObj = urlLib.parse(req.url, true) // 注意:这里的第二个参数一定要设置为:true, query才能解析为对象形式,可以更加方便地获取key:value
 const url = urlObj.pathname
 const get = urlObj.query
 console.log(url)
 // 模拟的mock数据
 const data = {
   "code": 200,
   "list": [
       {
           "id": '0001',
           "name": "test"
       },
       {
           "id": '0002',
           "name": "test2"
       }
   ]
 }
 // console.log(get.user)
 if (url === '/test') { // 接口名
   res.write(JSON.stringify(data))
 }
 res.end()
}).listen(9000)
  1. 启动node服务
node serve.js
  1. 配置vue.config.jsproxy,解决跨域
module.exports = {
devServer: {
  proxy: {
    '/api': {
      target: 'http://localhost:9000',
      ws: true, // proxy websockets
      changeOrigin: true, // 是否开启跨域
      pathRewrite: { // 路径重写
        '^/api': ''
      }
    }
  }
}
}
  1. 最后,在vue模板中使用即可
axios.get('/api/test')
.then(function(res){
 console.log(res);
})
.catch(function(err){
 console.log(err);
});

总结

方式二目前来看只支持get方式请求,对于post请求还有待研究。方式三虽然也是一种实现方式,但实现起来比较麻烦。个人建议使用方式一,灵活、方便。

相关文章

《Vue CLi3 修改webpack配置》

相关文章
|
9月前
|
人工智能 自然语言处理 搜索推荐
HiFox AI:一站式 AI 应用平台,多模型快速接入,自由选用
HiFox AI 是一站式AI应用平台,整合了30多个主流AI模型,提供文本生成、对话交流、图片生成等多种应用场景。平台内置1000+预构建AI应用,支持无代码搭建个性化应用和复杂工作流,帮助用户高效处理重复任务,显著提升工作效率。无论是普通用户还是技术专家,都能在HiFox AI上找到适合自己的解决方案,实现“人人都能使用AI”的愿景。
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
Qwen3:小而强,思深,行速
Qwen3(千问3)于北京时间4月29日凌晨发布,是Qwen系列大型语言模型的最新成员,具备全系列、开源最强、混合推理等特性。它包括两款MoE模型(Qwen3-235B-A22B和Qwen3-30B-A3B)及六个Dense模型,支持119种语言。Qwen3在代码、数学和通用能力测试中超越行业顶尖模型,如DeepSeek-R1和Grok-3。其旗舰版Qwen3-235B-A22B仅需4张H20即可本地部署,成本为DeepSeek-R1的35%。此外,Qwen3原生支持思考模式与非思考模式切换,降低复杂任务门槛,并支持MCP协议优化Agent架构。
6242 1
|
存储
头指针和头结点的区别
头指针和头结点的区别
814 1
|
存储 监控 关系型数据库
监控 PostgreSQL 的性能指标
监控 PostgreSQL 的性能指标
671 3
|
自然语言处理 程序员 编译器
`pylatex`是一个Python库,用于生成LaTeX文档。LaTeX是一种用于高质量排版和打印的文档准备系统,特别适用于科学、技术和数学文档。
`pylatex`是一个Python库,用于生成LaTeX文档。LaTeX是一种用于高质量排版和打印的文档准备系统,特别适用于科学、技术和数学文档。
|
SQL 分布式计算 Hadoop
【Azkaban 】(二)十分钟搞定 Azkaban 安装,亲测完美!
【Azkaban 】(二)十分钟搞定 Azkaban 安装,亲测完美!
2190 0
【Azkaban 】(二)十分钟搞定 Azkaban 安装,亲测完美!
|
弹性计算 分布式计算 监控
电商网站智能推荐最佳实践
最佳实践目前已覆盖23种常用场景,目前有180+篇最佳实践,这其中涉及100款以上阿里云产品的一个组合使用的场景(最佳使用场景)。本实践以电商网站为例,使用日志服务采集日志,RDS 作为后端数据存储服务,Maxcompute作为数据仓库并使用 dataworks 进行数据同步和处理,使用智能推荐产品搭建电商网站智能推荐系统。电商行业,需要向用户推荐的物品带有商品属性(物流信息,售卖信息等),可以引导直接交易,提升购买率和转化率,适合首页推荐、信息流等相关场景。
电商网站智能推荐最佳实践
|
存储 NoSQL 大数据
一文快速搞定Redis_数据类型及JavaApi操作
大家好,我是**ChinaManor**,直译过来就是中国码农的意思,我希望自己能成为国家复兴道路的铺路人,大数据领域的耕耘者,平凡但不甘于平庸的人。
一文快速搞定Redis_数据类型及JavaApi操作
Qt之界面换肤
简述 常用的软件基本都有换肤功能,例如:QQ、360、迅雷等。换肤其实很简单,并没有想象中那么难,利用前面分享过的QSS系列文章,沃我们完全可以实现各种样式的定制! 简述 实现原理 效果 新建QSS文件 编写QSS代码 加载QSS 更多参考 实现原理 新建多个QSS文件 为各个QSS文件编写对应的样式代码 换肤时,进行全局切换 效果
3229 0
查GDI对象泄露的利器:GDIView
查GDI对象泄露的利器:GDIView可以很详细的查到进程的GDI对象的总个数,详细的GDI对象的个数,以及其增减数量。其GDI对象类型也可以很详细的得知,以及其内存地址,句柄。实在是好使!下载地址:http://www.
1051 0

热门文章

最新文章