系列文章:
简介
前后端分离的开发模式,前端和后端是并行开发的。前端和后端通过接口进行交互。
在开发之前,前端和后端确定各个页面的接口地址、类型参数、返回值等,形成接口文档。
在后端还没有出接口时,前端可以用模拟数据的方式编写接口相关处理代码
常见的数据mock
方式是使用mockjs
,我比较常用的是用koa2
搭建node服务端
mockjs
简介
在真实的请求上拦截ajax
,并根据mockjs
的mock
数据的规则,模拟真实接口返回的数据,并将随机的模拟数据返回参与相应的数据交互处理
缺点:
因为是拦截了ajax
请求,所以F12
的network
中看不到请求
步骤
-
安装插件:
npm i mockjs --save-dev
-
在
src/
目录下新建文件mock.js
// src/mock.js
// 引入mockjs
const Mock = require('mockjs');
// 获取 mock.Random 对象
const Random = Mock.Random;
// mock一组数据
const produceNewsData = function() {
let articles = [];
for (let i = 0; i < 100; i++) {
let newArticleObject = {
title: Random.csentence(5, 30), // Random.csentence( min, max )
thumbnail_pic_s: Random.dataImage('300x250', 'mock的图片'), // Random.dataImage( size, text ) 生成一段随机的 Base64 图片编码
author_name: Random.cname(), // Random.cname() 随机生成一个常见的中文姓名
date: Random.date() + ' ' + Random.time() // Random.date()指示生成的日期字符串的格式,默认为yyyy-MM-dd;Random.time() 返回一个随机的时间字符串
}
articles.push(newArticleObject)
}
return {
articles: articles
}
}
// Mock.mock( url, post/get , 返回的数据);
Mock.mock('/news/index', 'post', produceNewsData);
- 修改
main.js
,引入mock
// 引入mockjs
import './mock.js'
koa
简介
koa
是一个基于nodeJS
的服务器端框架
常用的插件
koa
:服务器端框架koa-router
:路由管理koa-body
:接收post
数据koa2-cors
:跨域处理nodemon
:开发辅助工具,用户node自动重启
步骤
-
安装插件:
npm i koa koa-router koa-body koa2-cors nodemon --save-dev
-
在根目录下新建目录
mock
-
在
mock/
目录下新建文件server.js
// mock/server.js
const Koa = require('koa')
const app = new Koa()
const router = require('koa-router')()
const koaBody = require('koa-body')()
const cors = require('koa2-cors')
app.use(cors({
origin: function (ctx) {
// if (ctx.url === '/test') {
// return "*"; // 允许来自所有域名请求
// }
// return 'http://localhost';
return '*'
// 这样就能只允许 http://localhost:8080 这个域名的请求了
},
exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'],
maxAge: 5,
credentials: true,
allowMethods: ['GET', 'POST', 'DELETE'],
allowHeaders: ['Content-Type', 'Authorization', 'Accept'],
}))
router.get('/api/test', ctx => {
const query = ctx.query // ctx.request.query 或者 ctx.query
ctx.response.body = {
"code": 0,
"msg": "",
"data": {
}
}
})
router.get('/api/test/:id', ctx => {
const params = ctx.params // ctx.params
ctx.response.body = {
"code": 0,
"msg": "",
"data": {
}
}
})
router.post('/api/post', koaBody, ctx => {
const body = ctx.request.body // ctx.request.body
ctx.response.body = {
"code": 0,
"errmsg": ""
}
})
app.use(router.routes()).use(router.allowedMethods())
app.listen(3000)
-
修改
package.json
文件,在scripts
下添加命令:"mock": "nodemon --config nodemon --harmony ./mock/server.js"
-
在根目录下添加文件
nodemon.json
{
"watch": ["mock"],
"ext": "js",
"exec": "node ./mock/server.js"
}
- 需要请求接口时,先运行命令
npm run mock
。接口地址:http://localhost:3000/
发表评论