初学者示例
我喜欢来自@david-ellis 的原始检查,您应该深入研究它以理解它,因为它是一个很好的。但是,对于希望看到直接示例的初学者来说,我希望它更加简化。这是我希望看到有人给我看的东西。
让我们给出一个典型的场景,你使用 express 并且你的 app.js 文件中列出了很多路由。它的内容看起来像这样:
app.js
// ... startup code omitted above
app.get('/', function(req, res) {
res.render('index', { title : 'home' });
});
app.get('/contactus', function(req, res) {
res.render('contactus', { title : 'contact us' });
});
app.get('/anotherpage', function(req, res) {
res.render('anotherpage', { title : 'another page' });
});
// and so on...
您可以想象,如果您有 50 条路线,该文件可能会变得非常失控。最好从 app.js 文件中删除一些杂乱无章的东西。
您要做的是在您的应用程序中创建一个“控制器”文件夹,这样您的结构现在将如下所示:
app.js
/controllers
在“/controllers”中创建一个名为“index.js”的文件,然后输入以下代码。
/controllers/index.js
module.exports.set = function(app) {
// copy your routes listed in your app.js directly into here
}
从“app.js”文件中剪切并粘贴路由列表,并将它们放入“/controllers/index.js”文件中。
在您的 app.js 文件中,删除您的路线,然后执行以下操作。
app.js
// remove your routes and replace with this code
var controllers = require('./controllers');
controllers.set(app);
现在,如果您还想拆分“/controllers/index.js”文件,让我们再添加一个示例,以便您了解 Node.js 如何真正像俄罗斯娃娃一样组织代码.
在“/controllers”中再添加一个文件“accounts.js”并将以下内容放入其中。
/controllers/account.js
module.exports.set = function(app) {
// put more app route listings here
}
现在在“/controllers/index.js”文件中,引用“account.js”
/controllers/index.js
var account = require('./account.js');
module.exports.set = function(app) {
// your routes here
// let "account.js" set other routes
account.set(app);
}
正如您所想象的,您可以继续将内容分解成越来越小的部分,并在文件夹中放置更多文件夹,如果您愿意,可以使用“require”进行引用。您可以对“/lib”或库文件使用相同的概念。 “node_modules”已经在这样做了。
这只是 node.js 编程非常有趣的众多原因之一。
Manageable Express 4 路由示例
这是我回复的另一篇关于与此相关的 express 4 路线的帖子。
Rest with Express.js nested router