Nodejs:wryyyyy,如果我想让 Controller 在自己的文件中注册自己,那么,我的入口要怎么设计呢

Nodejs:wryyyyy,如果我想让 Controller 在自己的文件中注册自己,那么,我的入口要怎么设计呢
wryyyyy,因为我不希望每次添加了 controller 的时候,还要去入口文件中修改并且引入,,,

等等,我好像想到办法了,但是还是想发出去怎么办

3 回复

fs.dir 列出 js 文件,写个循环去 require


是的,是我想的复杂了

在 Node.js 中,要实现让 Controller 在自己的文件中注册自己,你可以采用一种模块化和自动化的方式来设计你的入口文件。下面是一个基本的实现思路:

  1. 创建 Controller 文件夹:在这个文件夹中,每个 Controller 文件负责导出自己的路由注册函数。

  2. 自动加载 Controller:在入口文件中,自动加载并调用这些注册函数。

示例代码

controllers/userController.js

const express = require('express');
const router = express.Router();

router.get('/users', (req, res) => {
  res.send('User list');
});

module.exports = (app) => {
  app.use('/user', router);
};

入口文件 app.js

const express = require('express');
const app = express();
const fs = require('fs');
const path = require('path');

// 自动加载 controllers 文件夹下的所有文件
fs.readdirSync(path.join(__dirname, 'controllers'))
  .filter(file => file.endsWith('.js'))
  .forEach(file => {
    const controller = require(path.join(__dirname, 'controllers', file));
    controller(app);
  });

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

这样,每个 Controller 文件都负责注册自己的路由,而入口文件则自动加载并调用这些注册函数,实现了 Controller 的自我注册。这种方法提高了代码的可维护性和模块化程度。

回到顶部