mock 数据嵌入项目,若干方法及实现

104 阅读2分钟

工具:

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