在项目的开发中,联调是屡见不鲜,并且也是比较费时间的一个环节。
在先后端分离的项目当中,咱们每每是先约定好接口与数据,再进行开发。
这个时候,若是前端能本身启动一个服务,按照必定的规则生成假数据,那么联调起来将会方便不少。
目前市面上有不少mock数据的工具,而我采用的是mockjs。
首先要明白一点,mockjs并不能启动一个服务,它只是一个生成数据的工具。咱们须要本身启动服务,接收请求,再把数据返回给前端。
这里我采用的是比较容易用的express。
express的安装就再也不赘述。说一下几个关键的点。
在项目的路由文件中,咱们能够这样来mock数据:前端
// 使用 Mock var Mock = require('mockjs') var data = Mock.mock({ // 属性 list 的值是一个数组,其中含有 1 到 10 个元素 'list|1-10': [{ // 属性 id 是一个自增数,起始值为 1,每次增 1 'id|+2': 1 }] })
这就生成好了假数据,而后就要经过路由返回出去,写法是这样子的:vue
router.get('/', function (req, res, next) { // 如下四行是用来设置返回的响应头,用来解决跨域问题 res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS"); res.header("Access-Control-Allow-Headers", "X-Requested-With"); res.header("Access-Control-Allow-Headers", "Content-Type"); // 这一行是将构造的假数据进行返回 res.send(data); res.render('index', { title: 'Express' }); });
如此,咱们便成功mock好了数据,接下来就是请求接口了。
在vue-cli3中,vue.config.js文件中对本地服务器进行设置:node
module.exports = { devServer: { proxy: { // 这里的key值我也没搞懂为何要这样子写,以后再研究一下 [""]: { // 假设咱们的mock服务启动在3000端口 target: `http://127.0.0.0:3000`, // 这里是用于设置跨域 changeOrigin: true, // 这里的路径重写实际上我也没搞懂是什么意思,以后再研究 pathRewrite: { ['^/']: '' } } }, } }
改写完配置,记得重启服务,以后就能够快乐地玩耍了。
mock服务可使用nodemon启动,这样子服务只要有了更改就会自动重启,高效不少。vue-cli