nodejs express 3.0 app.use是否被调用

coo*_*ool 3 node.js express

我正在使用Express 3.x和我放的时候

express = require("express")
routes = require("./routes")
http = require("http")
path = require("path")
app = express()
app.configure ->
    app.set "port", process.env.PORT or 3000
    app.set "views", __dirname + "/views"
    app.set "view engine", "jade"
    app.use express.favicon()
    app.use express.logger("dev")
    app.use express.bodyParser()
    app.use express.methodOverride()
    app.use app.router
    app.use express.static(path.join(__dirname, "public"))

app.use (req,res,next)->
    res.locals.name = "Jesse"
    next()


app.use "/", (req,res,next)->
    res.locals.name = "Jesse"

app.configure "development", ->
    app.use express.errorHandler()

app.get "/", routes.index

http.createServer(app).listen app.get("port"), ->
    console.log "Express server listening on port " + app.get("port")
Run Code Online (Sandbox Code Playgroud)

我的观点

extends layout

block content
  h1= title
  p Welcome to #{title}
  p Hello Mr #{name}
Run Code Online (Sandbox Code Playgroud)

我希望每次get请求进入时都会调用第一个中间件(app.use),但它不会发生.express2.x有什么变化吗?

这是来自快递3.x目录,它被评论

https://github.com/visionmedia/express/blob/master/examples/view-locals/index.js

谢谢

Jon*_*Ong 9

这是它应该如何看.你必须把中间件放在上面app.router

express = require("express")
routes = require("./routes")
http = require("http")
path = require("path")
app = express()
app.set "port", process.env.PORT or 3000
app.set "views", __dirname + "/views"
app.set "view engine", "jade"
app.use express.favicon()
app.use express.logger("dev")
app.use express.bodyParser()
app.use express.methodOverride()

app.use (req,res,next)->
    res.locals.name = "Jesse"
    next()

app.use app.router
app.use express.static(path.join(__dirname, "public"))

app.configure "development", ->
    app.use express.errorHandler()

app.get "/", routes.index

http.createServer(app).listen app.get("port"), ->
    console.log "Express server listening on port " + app.get("port")
Run Code Online (Sandbox Code Playgroud)