详解vue-cli 本地开发mock数据使用方法
作者:萝卜粥_Carrot 发布时间:2024-05-10 14:20:21
vue-cli 中可以通过配置 proxyTable 解决开发环境的跨域问题,具体可以参考这篇文章:Vue-cli proxyTable 解决开发环境的跨域问题
如果后端接口尚未开发完成,前端开发一般使用mock数据。
mock方法有多种多样,这里给出两种:
方法一: 使用express搭建静态服务
mock数据写在json文件中,proxyTable 里将接口代理到具体mock数据json文件上。
具体方法:
创建 mock
文件夹
build/dev-server.js
中添加如下代码
npm run dev 启动后,可以通过 http://localhost:8080/mock/db.json 访问数据,proxyTable对应设置代理即可(代理设置方法与解决跨域方法相似)
方法二 使用 JSON Server 搭建 Mock 服务器
JSON Server 是一个创建伪RESTful服务器的工具,具体使用方法可以看官方文档,这里直接讲在vue-cli 中的用法。
配置流程
全局安装 $ npm install -g json-server
项目目录下创建 mock
文件夹
mock
文件夹下添加 db.json
文件,内容如下
{
"posts": [
{ "id": 1, "title": "json-server", "author": "typicode" }
],
"comments": [
{ "id": 1, "body": "some comment", "postId": 1 }
],
"profile": { "name": "typicode" }
}
package.json
添加命令
"mock": "json-server --watch mock/db.json",
"mockdev": "npm run mock & npm run dev"
启动 mock 服务器
$ npm run mock
命令 运行 mock server
访问 http://localhost:3000/
发现 db.json
下第一级 json 对象被解析成为可访问路径
GET请求具体路径 如:http://localhost:3000/posts 可获取数据
faker.js 批量生成伪数据
如果需要大量的伪数据,手动构造比较费时费力,可以使用faker.js 批量生成。faker.js 的具体使用参见官方文档,这里做一个示例。
$ cnpm install faker -G
全局安装 faker
mock
目录下创建 faker-data.js
,内容如下
module.exports = function () {
var faker = require("faker");
faker.locale = "zh_CN";
var _ = require("lodash");
return {
people: _.times(100, function (n) {
return {
id: n,
name: faker.name.findName(),
avatar: faker.internet.avatar()
}
}),
address: _.times(100, function (n) {
return {
id: faker.random.uuid(),
city: faker.address.city(),
county: faker.address.county()
}
})
}
}
$ json-server mock/faker-data.js
在 json server 中使用 faker
请求 http://localhost:3000/address 可以获取到随机生成的100组伪数据
添加中间件
json server 使用 RESTful 架构,GET请求可以获取数据,POST 请求则是添加数据。
在开发过程中,有时候想直接模拟获取POST请求返回结果,可以添加 express 中间件 将POST请求转为GET请求。
mock
目录下创建 post-to-get.js
,内容如下
module.exports = function (req, res, next) {
req.method = "GET";
next();
}
启动命令添加运行中间件 --m mock/post-to-get.js
"mock": "json-server --watch mock/db.json --m mock/post-to-get.js",
重新启动服务,POST请求就被转换为GET请求了
其他需求也可以通过添加不同的中间件实现。
代理设置
在 config/index.js
的 proxyTable
将请求映射到 http://localhost:3000
代码中添加请求以测试效果
$ npm run mockdev
启动带mock 数据的本地服务
结果如下:
整体代码:https://github.com/carrotz/vue-cli-mock
来源:https://www.jianshu.com/p/ccd53488a61b


猜你喜欢
- 求一个数的平方根函数sqrt(int num) ,在大多数语言中都提供实现。那么要求一个数的平方根,是怎么实现的呢?实际上求平方根的算法方法
- 一.引言先看获取到的效果拍摄时间:2021:12:18 16:22:13照片拍摄地址:('内蒙古自治区包头市昆都仑区', &
- 一、注释1.#单行注释2."""多行注释"""3.pycharm多行注释快捷键:
- Python由Guido Van Rossum发明于90年代初期,是目前最流行的编程语言之一,因其语法的清晰简洁我爱上了Python,其代码
- 只想回答一个问题: 当编译器要读取obj.field时, 发生了什么?看似简单的属性访问, 其过程还蛮曲折的. 总共有以下几个step: 1
- 本文实例为大家分享了python实现图书管理系统的具体代码,供大家参考,具体内容如下import mysql.connectorimport
- 本文实例讲述了Vue常用传值方式、父传子、子传父及非父子。分享给大家供大家参考,具体如下:父组件向子组件传值是利用props子组件中的注意事
- 最近需要爬取某网站,无奈页面都是JS渲染后生成的,普通的爬虫框架搞不定,于是想到用Phantomjs搭一个代理。Python调用Phanto
- 首先我很不喜欢验证码这东西。但现在越来越多的网站使用验证码来抵御spam的冲击。太揪心了。背景介绍验证码的技术叫CAPTCHA验证,CAPT
- 不管是用import还是用from mmmm import *的方式导入模块,当程序运行之后,回头在看那个存储着mmmm.py文件的目录中,
- 0x00 is与====运算符是比较两个对象的内容是否相等,默认情况是调用对象的__eq__方法进行比较;而is是比较两个对象是否一样,它比
- 本文来源于Element官方文档:http://element-cn.eleme.io/#/zh-CN/component/carousel
- 在过去的十年中,MySQL已经成为广受欢迎的数据库,而WordPress博客使用的是MySQL数据库,虽然使用插件可以解决一些问题,但是实现
- 下面先给大家介绍下mpvue跳转页面,具体内容如下所示:正准备写一个小程序,得知了mpvue开源的消息,又恰巧之前刚刚学习了一点vue,便开
- Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。random.randomrandom.ra
- 简单替代密码简单替换密码是最常用的密码,包括为每个密文文本字符替换每个纯文本字符的算法.在这个过程中,与凯撒密码算法相比,字母表是混乱的.示
- 首先看一下super()函数的定义:super([type [,object-or-type]])Return a **proxy obje
- 现在Go1.14都已经发布好些日子了,之前发的Go环境搭建教程早已过时,只是因为时间问题一直没来得及更新这次怀着愧疚的心情,在凌晨四点时,将
- 实例如下所示:from xml.etree.cElementTree import ElementTree,Elementimport xl
- LangChain是什么 如何使用经过了chatGPT,大家都知道了prompt-based learning,也明白了promp