我如何使用外部routes.js,所以我不必在app.js中定义我的路线?

我想快速做一个简单的链接。 我把index.jade放进去了

a(href='/test', title='View test page') Test 

创build/路由一个test.js

 /* * GET test page. */ exports.test = function(req, res){ res.render('test', { title: 'Genious test' }); }; 

和一个简单的test.jade in / views

 extends layout block content h1= title p Test page 

我join了app.js

 app.get('/test', routes.test); 

如果我点击链接,我得到的错误

 Cannot GET /test 

而不是创buildroutes / test.js ,将其添加到routes / index.js

 exports.test = function(req, res){ res.render('test', { title: 'Test' }); }; 

然后app.get('/ test',routes.test); 将按预期工作。

好。 在你的app.js中添加下面几行,你的问题就解决了。

 var test = require('./routes/test.js') app.get('/test', test.test); 

这肯定会允许您的应用程序运行和链接是积极的。

这对我工作:

添加

 exports.newpage = function(req, res){ res.render('newpage'); }; 

到/routes/index.js。 然后join

 app.get('/newpage', routes.newpage); 

 app.get('/', routes.index); 

在server.js(或app.js)的底部。

几个月后,我将以不同的方式回答这个问题。 你只是想要它的工作,你有一个解决scheme,它的工作。 但是,如果你真的想要另一个routes.js来处理更多的路线呢? 不要担心节点可以处理这个!

假设这个结构,

 - app.js - routes/ - index.js - foo.js 

而且,假设您需要app.js的语法

 app.get('/test', routes.foo.test); 

为此,在routes.js添加,

 var foo = exports.foo = require('./foo'); 

然后在app.js

 var routes = require('./routes'); 

这将工作,它会让你在app.js说,

 app.get('/test', routes.foo.test); 

这将给你另一个层次来组织你的路线。 我通常喜欢把routes对象下的所有路由保留下来,但是如果你想直接导入到主routes

 var foo = require('./routes/foo'); app.get('/test', foo.test);