对Expressjs / Nodejs请求 – 响应处理感到困惑
那么 – 我读得越多,我就越困惑。 所以这里的来源:
var express = require('express') , http = require('http') , server = express() ; var home = require('./routes/home.js') , about = require('./routes/about.js') , contact = require('./routes/contact.js'); server.configure(function () { server.set('port', process.env.PORT || 3000); server.set('view engine', 'hjs'); server.set('views', __dirname + '/views'); server.use(express.logger()); server.use(server.router); server.use(express.favicon()); server.use(require('stylus').middleware(__dirname + '/public')); server.use(express.static(__dirname + '/public')); server.use(express.bodyParser()); server.use(express.cookieParser('your secret here')); server.use(express.methodOverride()); server.use(express.session()); }); server.get('*', function (req, res) { switch (req.path) { case '/': res.render('home', { title:'Home Page' }); break; case '/about/': res.render('home', { title:'About Page' }); break; case '/contact/': res.render('contact', { title:'Contact Page' }); break; default: res.render('home', { title:'404 - Page not found'}); } });
那么它的工作,但我还没有得到req /水库组合到我的头骨。 我很确定我不需要'*'
作为参数。 但是我不知道如何build立一个更好的解决scheme。 任何简单的愚蠢愚蠢的例子,所以我可以想象如何神奇的作品。
为了简化我的谜语,我想知道(并理解)为什么这个工作:
server.get('*', function (req, res) {
但是这不
server.get(function (req, res) {
第一个参数总是作为什么来处理?
我相信第一个参数是路线。 你可以把你的代码分解成下面这些可能更有意义的代码,并遵循约定:
server.get('/', function (req, res) { res.render('home', { title:'Home Page' }); }) server.get('/contact/', function (req, res) { res.render('contact', { title:'Contact Page' }); }); server.get('*', function (req, res) { res.render('Page Not Found', 404); });
等等…
您正在使用的'*'
只接受所有路线。 类似于通配符!