奇奇怪怪小经验
  • 五味杂陈·东倒西歪
  • Vue3 踩坑
    • 在vue3中定义filter
    • 父组件调用refs里的方法
  • Electron
    • Electron use vue devtools
  • Collection
    • Little tools
    • virtual box安装win11
    • CentOS 镜像
    • Yarn1 to Yarn2
  • 另一个伊甸-穿越时空的猫
    • 天冥值介紹及角色升星(升級)職業書出處
  • vuetify使用日记
    • 自定义Preset包
  • 前端小店
    • 奇怪知识点
    • 前端工具箱
    • 数组求和的几种方法
    • Vue i18n dynamic set messages
    • 关于H5自动播放被禁止的问题
    • 倒计时时间
    • css禁止选中文本
    • 在chrome dev tool 中使用JQ
  • Yarn-berry
    • Which files should be gitignored
    • yarn upgrade-interactive
  • 错误题集
    • Node "cannot use import statement outside a module"
  • Node
    • 在Node中使用Es6的import
    • express 动态加载route与使用自定义回调和通用回调
  • deno
    • 构建简单的api service
  • Mac使用技巧
    • 提示:已损坏,为无法打开,您应该将它移到废纸篓
    • macOs 升级后提示xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missin
  • winston使用技巧
    • 使用level颜色
    • level大写
  • demo
    • 九宫格抽奖
    • 波浪效果
  • Vue
    • 在组件中同步v-model
    • 工具库
  • 文章记录
    • 前端开发
  • 日常工具
    • 微信小助手
    • Untitled
由 GitBook 提供支持
在本页
  1. Node

express 动态加载route与使用自定义回调和通用回调

上一页在Node中使用Es6的import下一页构建简单的api service

最后更新于4年前

这有帮助吗?

CtrlK

这有帮助吗?

server.js

import express from 'express';
import http from 'http';
import router from './router';

const app = express();
const service = http.createServer(app);

app.use('/', router);

service.listen(3000);

router.js

import express from 'express';
import fs from 'fs';
import path from 'path';
import requestHandler from '../requestHandler';

let api = express.Router();

// 使用path,绝对路径
fs.readdirSync(path.join(__dirname, '/routeMap'))
  .filter(function (filename) {
    return filename !== 'index.js' && filename.slice(-3) === '.js';
  })
  .forEach(function (filename) {
    const servicename = filename.split('.js')[0];
    let filepath = path.join(__dirname, '/routeMap/', filename);
    let service = require(filepath);
    Object.keys(service).map((key, index) => {
      service[key].map((path) => {
        // 自定义回调
        if (typeof path === 'object') {
          api[key](path.url, path.handler);
        } else {
        // 使用通用封装回调
          api[key](path, requestHandler);
        }
      });
    });
  });

export default api;

routerMap/servicename.js

module.exports = {
    get: ['/api/get'],
    post: ['/api/post'],
    delete: [],
    patch: [],
    put: [
        {
            url: '/api/put',
            handler: function(req, res) {
                res.send(200)
            }
        }
    ]
}

requestHandler.js

// define your request handler