在Express.js应用程序中分解和模块化app.js
文件是否有一个通用约定?或者,将所有内容保存在单个文件中是很常见的吗?
发布于 2019-06-20 03:47:11
我有我的应用程序构建在快速生成器工具之上。您可以通过运行npm install express-generator -g
并使用express <APP_NAME>
运行它来安装它。
为了给你一个视角,我的一个较小的应用程序的结构看起来像这样:
~/
|~bin
| |-www
|
|~config
| |-config.json
|
|~database
| |-database.js
|
|~middlewares
| |-authentication.js
| |-logger.js
|
|~models
| |-Bank.js
| |-User.js
|
|~routes
| |-index.js
| |-banks.js
| |-users.js
|
|~utilities
| |-fiat-converersion.js
|
|-app.js
|-package.json
|-package-lock.json
我喜欢这种结构的一个很酷的地方是我开发的任何express应用程序都会采用这种结构,这就是路由的组织方式。我不喜欢要求每个路由文件都放到app.js和app.use()
中,特别是当文件变得更大的时候。因此,我发现将我的所有路由集中在./ app.use()
/index.js文件中是很有帮助的。
最后,我的app.js将如下所示:
...
const express = require('express');
const app = express();
...
require('./routes/index')(app);
我的./routes/index.js将如下所示:
module.exports = (app) => {
app.use('/users', require('./users'));
app.use('/banks', require('./banks'));
};
我之所以能够简单地使用require(./users)
,是因为我使用express.Router()编写了用户路由,它允许我对多个路由进行“分组”,然后一次导出它们,目的是使应用程序更加模块化。
这是在我的./routers/users.js路由上的一个例子:
const router = require('express').Router();
router.post('/signup', async (req, res) => {
// Signup code here
});
module.exports = router;
希望这能帮助回答你的问题!祝你好运!
https://stackoverflow.com/questions/7732293
复制相似问题