【发布时间】:2014-10-06 09:19:00
【问题描述】:
我是 node.js 的新手,我尝试通过这项技术创建一个新项目。我使用 express 框架,但一开始我遇到了一些麻烦。我已经通过解决方法解决了这个问题,但我对下一个行为有疑问: 我的 app.js
var express = require('express')
, routes = require('./routes/index')
, routes = require('./routes/login');
var app = module.exports = express.createServer();
console.log(app.env);
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// Routes
app.use( function(req, res, next) {
if (req.url == '/') {
res.render('index', { title: 'Express!' })
} else {
next();
}
});
//app.get('/', routes.index);
app.get('/login', routes.login);
app.listen(3000, function(){
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
});
在 // Routes 块中,您可以看到 app.use 和 app.get。如果我尝试使用 app.get 而不是 app.use 我会收到错误 "cannot get /"。我试图将 index.html 文件放到我的公用文件夹中。但是我每次都得到这个文件的“/”路由,而不是 index.js 的渲染。
app.get('/login', routes.login); - 工作正常,但“/”路线有问题。我不想让我的代码处于这种状态,请帮助我理解这种行为。
提前致谢。
【问题讨论】:
-
你是在重新声明
routes,只需更改变量名。 -
谢谢。但是如何写出漂亮的代码呢?我每次都要复制对: routes = require('./routes') -> app.get('/', routes.index); ....... routes1 = require('./routes/login') -> app.get('/login', routes1.login);等等……?
-
您可以使用许多模块化模式。例如,您可能会将所有单独的路由包含在一个通用的
routes模块中。
标签: javascript node.js express