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”