app.use([path], function)
Use the given middleware function, with optional mount path, defaulting to "/". 这是app.use的官方说明。说明app.use这个是用来配置路径响应的。app.get以及app.post等等,功能不也是路由响应么?我不明白这两个有什么区别?尤其是执行顺序方面?当我访问localhost:3000的时候,是先调用app.use(function....)呢还是先调用app.get('/',...)呢。新手刚刚学习node.js,各位帮帮忙解解疑惑。
回复 (7)
你没有next
...666 没next 这么low的问题,自己还找不出 请问有什么想法
app.use和app.get,app.post等等在express框架里面处理都是类似的,都是抽象成一个Layer(层),只是app.get这些的层比app.use的层稍微复杂一点.顺序方面的话,先注册的层在访问的时候先调用,调用next()到下一个匹配url的Layer
其实get只是use的一个实现,
以前没其他框架使用经验, 这个很头疼, 我也纠结过..
app.use 不是来处理请求的, 而是来加载处理请求的路由模块的参数.
比如这个例子:
http://expressjs.com/guide.html
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(function(err, req, res, next){
// logic
});
一个请求过来, 被 .use 写好的各个函数依次处理,
更准确说, 是从第一个开始处理, 到一个做一点操作, 也可能截断流程直接返回..
而 app.get 等等 HTTP 请求的操作, 统一在 app.routes 着一个模块里边
http://expressjs.com/api.html#app.routes
所以, 先调用应该是 app.use, 而 app.get 应该是属于被前者调用才对..
我的水平只能解释到这里了..
你这样一说,我好想明白了一点。多谢你了。 你能不能去看一下我发的另一个帖子,关于req.flash的问题。
我觉得这个也是不知道为什么。 我那样写以后,就无法访问 localhost:3000,连接很长时间都连接不上去。删掉
app.use(function(req,res,next){
res.locals.user=req.session.user;
res.locals.success=req.session.success;
res.locals.error=req.session.error;
})
问题就没有了。