对于前端开发人员来说,javascript扮演着越来越重要的角色。它不仅能赋能浏览器,在web服务器上也有很大的价值(我们可以用nodeJS编写服务器代码,启动web服务器)。因此,本文描述了javascript在服务器端的应用。我将介绍如何使用nodeJS构建一个模拟服务器,方便前端定制模拟数据请求,提高前端开发的主观能动性,探索项目的健壮性。
我们会学习的
Koa基本上使用了koa-router的基本用法。koa-logger使用glob来支持文件遍历和搜索节点的几个核心API的使用。nodemon用于自动重启模拟服务器的基本设计思想
要通过目录路径和服务器api的映射关系实现我们的api访问,比如我们的访问接口/api/article/122,只需要在mock server目录下api的article目录下创建122.json文件,json文件的数据可以自定义,方便前端调试。
具体实现
1.构建节点服务
const Koa=require(' Koa ');const app=new Koa();App.listen(3000)2。注册路由我们使用koa-router实现后台服务的路由功能,通过koa提供的上下文ctx将读取的数据返回给前端:
const Koa=require(' Koa ');const Router=require(' KOA-Router ');const app=new Koa();const Router=new Router({ prefix : '/API ' });router.get('/name ',(ctx,next)={ ctx.body={ name: '徐晓曦' });app。使用(router.routes())。使用(router . allowedmethods());App.listen(3000)这样我们就可以实现一个基本的后端api服务器,几乎不能使用。当我们请求/api/name时,我们会将相应的数据返回给前台。这一步是我们实现模拟服务的关键一步。接下来,我们将具体实现目录遍历和api的自动注册。
3.自动注册api接口并返回数据。我们将在这个阶段自动注册api服务。这里,我们使用第三方模块glob遍历目录,通过node的fs模块读取api文件的数据并返回前台。glob的使用非常简单,感兴趣的朋友可以自己学习,这里就不多介绍了。具体实现如下:
const Koa=require(' Koa ');const Router=require(' KOA-Router ');const glob=require(' glob ');const { resolve }=require(' path ');const fs=require(' fs ');const app=new Koa();const Router=new Router({ prefix : '/API ' });//注册路由glob.sync (resolve('。/API ',' * */*。JSON’)。foreach ((item,I)={ let apijsonpath=item item . split('/API ')[1];让apiPath=apiJsonPath.replace('。json ',' ');router.get(apiPath),(ctx,next)={ try { let jsonStr=fs . readfilesync(item)。toString();CTX . body={ data : JSON . parse(JSON str),state:200,type : ' success '/custom response body } } catch(err){ CTX . throw(' server error ',500);} });});app。使用(router.routes())。使用(router . allowedmethods());app . listen(3000);添加控制台日志我们使用koa-logger在终端打印节点日志,方便调试。虽然这不是本文的重点,但是想要做节点开发的前端从业者还是有必要知道的。
const logger=require(' KOA-logger ')app . use(logger());这样,每一个请求都会被打印在终端上。
生成路径图文件的功能并不是本文的重点,但是会极大的方便前端开发者的调试请求,因为如果api路径长,我们需要逐个搜索,但是有了这个图文件,我们只需要复制自动生成的路径。具体实现如下:
//.const routerMap={ };//存储路由映射//注册路由glob.sync (resolve('。/API ',' * */*。JSON’)。foreach ((item,I)={//.//记录路由routerMap[apiJsonPath]=apippath;});fs.writeFile('。/routerMap.json ',JSON.stringify(routerMap,null,4),err={ if(!Err) {console.log('路由映射生成成功!') }});基本目录结构
完全码
克隆地址github地址
https://github.com/MrXujiang/openCoder/tree/master/mockServer
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。