首页 定制产品 地区报价 案例展示 企业介绍
  • 首页
  • 定制产品
  • 地区报价
  • 案例展示
  • 企业介绍
  • 案例展示

    你的位置:【欧冠体育平台网址】 > 案例展示 > 五分钟教你用NodeJS手写一个Mock数据服务器

    五分钟教你用NodeJS手写一个Mock数据服务器

    发布日期:2022-08-06 16:21    点击次数:109

    关于前端开发者而言,javascript正扮演着越来越首要的地位,它不只能为阅读器端赋能,在web服务器方面也有很大的价钱(我们可以或许用nodeJS来写服务端代码,启动web服务器),因而本文所要形貌的,便是javascript在服务端的应用。我将介绍怎么样应用nodeJS来搭建一个mock服务器,方便前端自定义mock数据要求,行进前端开发的客观能动性和对名目硬朗性的探索。

    我们将学到

    koa根抵应用 koa-router的根抵用法 koa-logger的应用 glob支持文件遍历查寻 node几个焦点api的应用 应用nodemon做自动重启

    mock服务器根抵策画思路

    经由过程目录门路和服务端api的晖映纠葛来完成我们的api拜访,比喻我们拜访接口/api/article/122,我们只需求在mock服务器目录的api的article目录下,创立122.json文件即可,json文件的数据可以或许自定义,方便前端调试。

    具体完成

    1.搭建一个node服务

    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: 'xuxiaoxi'     }   });  app   .use(router.routes())   .use(router.allowedMethods());    app.listen(3000) 

    这样我们便可以或许完成一个屈身能用的根抵的后援api服务器了,当我们要求/api/name时,会返反响应的数据给前台,这一步是我们完成mock服务的关键一步,接上去我们具体来完成目录的遍历和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];     let apiPath = apiJsonPath.replace('.json', '');          router.get(apiPath, (ctx, next) => {         try {             let jsonStr = fs.readFileSync(item).toString();             ctx.body = {                 data: JSON.parse(jsonStr),                 state: 200,                 type: 'success' // 自定义照顾体             }         }catch(err) {             ctx.throw('服务器舛误', 500);         }       }); });   app   .use(router.routes())   .use(router.allowedMethods());  app.listen(3000); 

    增加掌握台日志 我们应用koa-logger实今朝终端打印node日志,方便调试,诚然这不是该文章的重点,然则关于想做node开发的前端从业者,照旧颇有须要相识的。

    const logger = require('koa-logger') app.use(logger()); 

    这样,我们每个要求都市在终端打印进去。

    路由晖映文件的生成 该功用也不是本文的重点,然则会极大的方便前端开发者调试要求,因为假定api门路很长,我们需求一个个查找,然则有了这个map文件,我们只需求拷贝自动生成的门路即可。具体完成以下:

    //... const routerMap = {};  // 寄放路由晖映  // 注册路由 glob.sync(resolve('./api', "**/*.json")).forEach((item, i) => {     // ...          // 记载路由     routerMap[apiJsonPath] = apiPath; });  fs.writeFile('./routerMap.json', JSON.stringify(routerMap, null , 4), err => {     if(!err) {         console.log('路由地图生成告成!')     } }); 

    根抵目录组织

    本文转载自微信群众号「趣谈前端」