进行 web 网站开发时,前后端分离导致开发进度不同,前端经常需要等待后端的接口数据完成开发才可以继续调试。且开发环境,测试环境和线上环境分离,本地开发时无法运用测试环境的接口,开发时的接口和最终部署的接口也并不相同,每次测试时来回部署代码要耗费很多时间。 使用 json-server + mockjs 编写 json 格式的模拟数据接口,在等待后端准备接口期间,前端可以使用假数据进行模拟。
json-server json-server 是可以在本地运行,存储 json 数据的服务端。通过npm install -g json-server
安装。
database.json 文件格式:
{ "data1" : { "subdata1" : "value1" , "subdata2" : "value2" , "subdata3" : "value3" }, "data2" : {"subdata1" : , "subdata2" : , "subdata3" : }, "data3" : {"subdata1" : , "subdata2" : , "subdata3" : } }
在配置完 json 文件后,使用json-server --watch --port 3001 database.json
命令,启动服务 database.json。访问localhost:3001
可以查看 json 数据。
实现各类数据请求 GET / GET|POST /post GET|POST /post/1 GET /post?param1=¶m2= GET /post/post?_page=1 GET /posts?_sort=views&_order=asc GET /posts?_start=20 &_end=30 GET /posts?q=xxx
自定义 json-server 可以自定义路由,检验条件或输出格式
const jsonServer = require ('json-server' ) const server = jsonServer.create() const router = jsonServer.router('db.js' ) const middleWares = jsonServer.defaults() server.use(jsonServer.bodyParser) server.use(middleWares) server.use(router) server.listen({ host : '192.168.137.1' , post : 3000 }, () => { console .log('JSON Server is running' ) })
其它功能:
const path = require ('path' )const router = jsonServer.router(path.join(__dirname, 'db.json' ))
server.post( '/mock/register' , ({ body : { username = '' , password = '' } }, res) => { username !== 'admin' && password ? res.jsonp({ err: 0 , msg: '注册成功' , data: { username, password, }, }) : res.jsonp({ err: 1 , msg: '注册失败' , }) } )
server.use((req, res, next ) => { if (isAuthorized(req)) { next() } else { res.sendStatus(401 ) } })
router.render = (req, res ) => { let status let len = Object .keys(res.locals.data).length if (res.req.originalMethod === 'DELETE' ) { status = len === 0 } else { status = !!len } setTimeout(() => { res.jsonp({ err: status ? 0 : 1 , msg: '操作' + (status ? '成功' : '失败' ), data: res.locals.data, }) }, 1000 ) }
mockjs Mock.js 是一款模拟数据生成器,可以根据数据模板生成模拟数据,模拟 Ajax 请求,基于 HTML 模板生成模拟数据。
npm install mockjs var Mock = require ('mockjs' );var data = Mock.mock({ ... })
Mock.js 使用数据模板定义生成模拟数据,数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:'name|rule': value
。也可以使用Mock.Random
工具类生成各种随机数据。具体语法在Mock.js 官网 中有详细说明。
const Mock = require ("mockjs" ); const MR = Mock.Random; module .exports = () => { let data = Mock.mock({ "home|5" : [ { "id|+1" : 1 , "name" : "@cname" , "imgURL" : MR.image('750X200' ,MR.color(),MR.cword(4 ,10 )) ... }, ], ... }); return data; }
webpack 配置数据地址
https://blog.csdn.net/qq_41629150/article/details/99645632 https://github.com/typicode/json-server#getting-started
Mock.js 官网 json-server