Nodejs:wryyyyy,如果我想让 Controller 在自己的文件中注册自己,那么,我的入口要怎么设计呢
Nodejs:wryyyyy,如果我想让 Controller 在自己的文件中注册自己,那么,我的入口要怎么设计呢
wryyyyy,因为我不希望每次添加了 controller 的时候,还要去入口文件中修改并且引入,,,
等等,我好像想到办法了,但是还是想发出去怎么办
3 回复
fs.dir 列出 js 文件,写个循环去 require
是的,是我想的复杂了
在 Node.js 中,要实现让 Controller 在自己的文件中注册自己,你可以采用一种模块化和自动化的方式来设计你的入口文件。下面是一个基本的实现思路:
-
创建 Controller 文件夹:在这个文件夹中,每个 Controller 文件负责导出自己的路由注册函数。
-
自动加载 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 的自我注册。这种方法提高了代码的可维护性和模块化程度。