express.js中app.use和app.get的区别

我是新来expression和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()用于将中间件绑定到您的应用程序。 path是一个“ 装载 ”或“ 前缀 ”path,并限制中间件仅适用于以它开头的任何请求的path。 它甚至可以用来embedded另一个应用程序:

 // subapp.js var express = require('express'); var app = modules.exports = express(); // ... 
 // server.js var express = require('express'); var app = express(); app.use('/subapp', require('./subapp')); // ... 

通过指定/作为“ 挂载 ”path, app.use()将响应以/开头的所有path,而不pipe所使用的HTTP动词如何:

  • GET /
  • PUT /foo
  • POST /foo/bar
  • 等等

另一方面, app.get()是Express的应用程序路由的一部分,用于在使用GET HTTP动词请求时匹配和处理特定路由:

  • GET /

而且,你的app.use()例子的等价路由实际上是:

 app.all(/^\/.*/, function (req, res) { res.send('Hello'); }); 

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

这是我的准则:

  • 如果你想公开一个GET方法,使用app.get
  • 如果要添加一些中间件(在HTTP请求到达您在Express中设置的路由之前的处理程序),或者如果您希望使路由模块化(例如,公开一个其他Web应用程序可以使用的npm模块path集)。

当HTTP方法设置为GET调用app.use ,而不考虑HTTP方法调用app.use ,因此定义了一个位于Express包允许访问的所有其他RESTfultypes之上的层。

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