关于app.use和app.get的疑惑。
发布于 13 年前 作者 fatelovely 45049 次预览 最后一次回复是 10 年前 来自
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 回复
以前没其他框架使用经验, 这个很头疼, 我也纠结过…
app.use不是来处理请求的, 而是来加载处理请求的路由模块的参数. 比如这个例子: http://expressjs.com/guide.html一个请求过来, 被
.use写好的各个函数依次处理, 更准确说, 是从第一个开始处理, 到一个做一点操作, 也可能截断流程直接返回… 而app.get等等 HTTP 请求的操作, 统一在app.routes着一个模块里边 http://expressjs.com/api.html#app.routes 所以, 先调用应该是app.use, 而app.get应该是属于被前者调用才对…我的水平只能解释到这里了…
你这样一说,我好想明白了一点。多谢你了。 你能不能去看一下我发的另一个帖子,关于req.flash的问题。
我觉得这个也是不知道为什么。 我那样写以后,就无法访问 localhost:3000,连接很长时间都连接不上去。删掉
问题就没有了。
你没有next
@fatelovely 你忘记在末尾调用 next 了。
…666 没next 这么low的问题,自己还找不出 请问有什么想法
app.use和app.get,app.post等等在express框架里面处理都是类似的,都是抽象成一个Layer(层),只是app.get这些的层比app.use的层稍微复杂一点.顺序方面的话,先注册的层在访问的时候先调用,调用next()到下一个匹配url的Layer
其实get只是use的一个实现,