我对express和node.js有点陌生,我搞不清楚app.use和app.get之间的区别。看起来你可以同时使用它们来发送信息。例如:

app.use('/',function(req, res,next) {
    res.send('Hello');
    next();
});

似乎和这个是一样的:

app.get('/', function (req,res) {
   res.send('Hello');
});

当前回答

除了以上的解释,我所经历的:

app.use('/book', handler);  

将匹配所有以“/book”开头的请求。所以它也匹配" /book/1 "或" /book/2 "

app.get('/book')  

只匹配精确匹配的GET请求。它不会处理像'/book/1'或'/book/2'这样的url

所以,如果你想要一个全局处理程序来处理你所有的路由,那么app.use('/')是选项。app.get('/')将只处理根URL。

其他回答

每次请求发送到服务器时,都会调用App.use。 唯一的事情是我们应该在处理get, put, post等请求之前调用它

app.use(middleware); 
function middleware(req, res, next)
{
  console.log("Came in middleware function without arrow");
  next();
}

App.get只对给定路径的get请求被调用。

app.get('/myget', myget_function);
function myget_function(req, res)
{
  console.log("Came in function myget");
  res.send('Hello World! from myget');
}

post只在给定路径的post请求时被调用。

app.post('/mypost', mypost_function); 
function mypost_function(req, res)
{
  console.log("Came in function mypost");
  res.send('Hello World! from mypost');
}

app.use是Connect (Express所依赖的中间件框架)中的“低级”方法。

以下是我的指导原则:

如果你想公开一个GET方法,请使用app.get。 如果你想添加一些中间件(HTTP请求到达你在Express中设置的路由之前的处理程序),或者如果你想让你的路由模块化(例如,从npm模块中公开一组路由供其他web应用程序使用),请使用app.use。

简单的 app.use表示“在所有请求上运行这个” app.get的意思是“在给定URL的GET请求上运行这个”

除了以上的解释,我所经历的:

app.use('/book', handler);  

将匹配所有以“/book”开头的请求。所以它也匹配" /book/1 "或" /book/2 "

app.get('/book')  

只匹配精确匹配的GET请求。它不会处理像'/book/1'或'/book/2'这样的url

所以,如果你想要一个全局处理程序来处理你所有的路由,那么app.use('/')是选项。app.get('/')将只处理根URL。

app.get在HTTP方法设置为GET时被调用,而app.use则不管HTTP方法是什么都被调用,因此它定义了一个层,该层位于快速包提供给你访问的所有其他RESTful类型之上。