我最近开始学习Node JS。事情进展顺利。我在server.js文件中看到了一个在线教程并接受了GET请求。
由于我来自Java背景,因此我想到了一些问题,我在互联网上搜索了所有问题,但却找不到它们。
例如:
var express=require("express");
var app=express();
app.get("/api/request1/",function(){
//some code here
})
app.get("/api/request2/",function(){
//some code here
})
.
.
.
.
app.get("/api/request100/",function(){
//some code here
})
这会使我的代码变得繁琐且难以管理。正如我所说,我有一个Java背景,我曾经在不同的Servlet中分离我的代码。
请指明一些好的资源或技巧如何克服这个问题。
答案 0 :(得分:2)
您可以轻松模块化您的快速路线。
要关注您的示例:在项目中,使用以下内容创建目录routes
和文件routes/api.js
:
var express = require('express');
var router = express.Router();
router.get('/request1', function(req, res, next) {
res.send('...');
});
router.get('/request2', function(req, res, next) {
res.send('...');
});
module.exports = router;
在您的server.js
:
app.use('/api', require('./routes/api'));
如果有人有相同的问题,您可以参考Express routing documentation
答案 1 :(得分:1)
app.get(...)
只是一个函数调用。您可以轻松地执行此操作:
require('routes1')(app);
require('routes2')(app);
这些模块导出function(app) { app.get(...); app.get(...); }
更好的是,Express.js(不是Node.js - Node.js就像JVM,Express就像Tomcat)应用可以挂载子应用程序:
app.use('/api', require('subapp'));
如果subapp
是普通的Express.app,例如app.get('/request1', ...)
,则在安装后,您将可以使用/api/request1
。 (这仅适用于整个层次结构;因此,如果要将/api/request1
... /api/request100
拆分为十个文件,则可能需要使用第一种方法,或重新考虑层次结构的工作方式。)< / p>
答案 2 :(得分:1)
是的,您应该尽可能地保持与模块的分离,因为我看到您已经开始学习快速结帐express-generator模块,它为您提供了一个很好的小型锅炉板代码,从结构化开始一个大型项目还会查看博客best-practices-express-structure以获取高级用法