工具:
nodejs@14.20.1
npm@6.14.17
内容:
在工程中,尤其是大型的工程中,mock 数据是 前后端分离开发的 基本保障。在不依赖后端数据支撑下,前端可以完善自己的逻辑 及 可以运行起来
通常开发时,mock 数据刚接触前端的开发人员,都喜欢写入到程序中,当开发完成时,需要 把 data 中数据清空,且在饮用数据的部分程序修改饮用方式,有时可能需要改动的代码非常多,如果关联性很强的逻辑,那么可能需要修改的不止一处,一次清除,可能会出现遗漏且很难测出来,且无法保证代码完整性,所以时非常不可取的
于是出现了 mock,把 mock.js 引入项目中,在 webpack 中,
例如:
devServer: {
// 新增中间件
before (app, server) {
app.get('/api/a.do', async (req, res, next) => {
res.json({ text: 'hello, world' })
})
},
after () {}
}
}
逻辑中需求数据,需要使用 ajax 方式,用 faker.js 来 创建一些可使用的数据,通过 修改 devServer.before 来实现环境的切换
通常使用如此方法
还有一种 在工程中插入 mock 服务,mock 服务作为 工程的子工程,可以跟随一起启动,也可以单独启动,可以灵活的完善接口返回的情况和数据情况,缺点时工程量,我们需要同时写一部分接口逻辑
例如:
packages.json
"scripts": {
"start": "npm-run-all --parallel --continue-on-error start:*",
"start:server": "cd ./server && yarn start",
"start:project": "vue-cli-service serve",
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
/program/server/package.json
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon --exec \"babel-node ./app.js --extensions '.js', '.js', '.jsx', '.es6'\" "
},
注:如果是 ts, 则 使用命令 nodemon --exec \"babel-node ./app.ts --extensions '.ts',
/program/server/app.js
app
.use(koaBody())
.use(error())
.use(morgan(' ":method :url" :status :res[content-length] ":referrer" ":user-agent" ')) // 请求日志
.use(corsl(app))
.use(authentication())
// .use(morgan("combined", {stream: fs.createWriteStream(__dirname+"/access.log",{flags: "a"})}))
.use(serve(path.join(__dirname, "/static")))
.use(router.routes())
app.listen(8081, function(){
console.log('start in http://localhost:8081')
})
/program/server/router.js
const Router = require("koa-router")
const controller = require("../controllers")
const router = new Router({
prefix: "/"
})
const {Admin} = controller
router
.get("login", Admin.login)
module.exports = router