我如何使用外部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);