1

我是grunt-contrib-connect 的新手,遇到了这个跟随middleware功能 Yoeman 实现 -

middleware: function(connect, options, middlewares) {
    return [
        proxySnippet,
        connect.static('.tmp'),
        connect().use('/bower_components', connect.static('./bower_components')),
        connect.static(config.app)
    ];
}

这个实施的目的是什么?

4

1 回答 1

1

这些是连接中间件。中间件是可以在每个请求上执行的请求回调函数。它可以修改/结束当前的请求-响应周期,也可以将请求传递给堆栈中的下一个中间件。您可以从express guide了解更多关于中间件的信息。

在您的代码中,堆栈中有四个中间件。第一个用于将当前请求代理到另一台服务器。其余三个中间件用于提供来自三个不同目录的静态文件。

当向服务器发出请求时,它将按以下顺序通过这些中间件:

  1. 检查请求是否应该被代理。如果它被代理到其他服务器,那么它是请求/响应周期的结束,其余三个中间件将被忽略。

  2. 如果没有代理,它将尝试从./tmp目录中提供请求的文件。

  3. 如果在上面找不到该文件,它将在./bower_components. 请注意,此中间件将仅针对路径中包含 `/bower_components/ 的请求执行。例如http://localhost:9000/bower_components/bootstrap/bootstrap.js
  4. 最后,如果在上述两个目录中都没有找到文件,它会在config.app.

这是堆栈的结尾,之后您将收到 404 Not found 错误。

于 2015-10-25T02:24:22.110 回答