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

时间:2013-03-27 17:24:01

标签: javascript node.js express

我想在快递中做一个简单的链接。 我把它放进了index.jade

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

创建/路由test.js

/*
* GET test page.
*/

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

和/ views中的简单test.jade

extends layout

block content
h1= title
p Test page

我在app.js中添加了

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

如果我点击链接,我会收到错误

Cannot GET /test

4 个答案:

答案 0 :(得分:4)

确定。在您的app.js中添加以下行,您的问题将得到解决。

var test = require('./routes/test.js')

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

这肯定会让您的应用运行并且链接处于活动状态。

答案 1 :(得分:3)

不是创建 routes / test.js ,而是将其添加到 routes / index.js < / p>

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

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

答案 2 :(得分:1)

这对我有用:

添加

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

到/routes/index.js。然后添加

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

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

位于server.js(或app.js)的底部。

答案 3 :(得分:1)

事实上几个月后,我将以不同的方式回答这个问题。你只是想让它工作,你有一个解决方案让它工作。但是,如果您真的想要另一个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对象下,但是如果你想直接导入main,你也可以,

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