vue-cli json-server多个文件数据监听

vue-cli2项目中,一直有这个烦恼。
用json-server做接口模拟数据,当接口很多的时候,所有数据放到一个文件下,就不合适了。
我的实现方法是,
每个接口对应一个js文件,文件内module.exports出json格式的数据,最后有个总的data.js提供给json-server.
上述可以正常使用,但是有个很大问题,就是json-server只能监听到data.js一个文件的更新做重启,分接口文件是不会自动更新的。json-server的命令也看过,好像只能监听一个。
搞的每次修改接口数据,都要重启服务。
后面自己搞了一个node的静态文件服务,

router.all('**/*.action', async (ctx, next) => {
  let fsName;
  if(/\/(\w+).action/.test(ctx.url)){
    fsName = RegExp.$1;
    ctx.response.type = 'json';
    ctx.response.body = fs.createReadStream('./data/' + fsName +'.json');
  }else{
    ctx.throw('没有这个文件');
  }

})

但是这样的话,又相当与多启了一个node。
有没有什么好的办法,在json-server里解决掉多文件的自动更新问题。

阅读 5.2k
2 个回答

现在没在用json-server了,
1.自己用koa2搭了一个文件服务器,直接读去文件。

router.post('**/*.action', async (ctx, next) => {
    try{
          let fsName;
            if (/\/?(\w*)\/(\w+).action/.test(ctx.url)) {
                var act = RegExp.$2;
                var isFirst = RegExp.$1;
                isFirst && (act = act.substring(0, 1).toUpperCase() + act.substring(1));
                fsName = isFirst + act;
                ctx.response.type = 'json';
                ctx.response.body = fs.createReadStream(getFile(fsName));    
                
            }

2.另外一个办法,data数据文件放到工程static文件夹里面,ajax路径直接映射对应文件路径就好了

axios.get('static/data/heatChinaRealData.json')

3.mockjs + axios-mock-adapter

4.插件mocker-api (没有随机数方法,需要自己手动实现)

5.楼下用的nodemon,监听所有文件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题