Node.js の Connect、Express、および「ミドルウェア」とは何ですか? 質問する

Node.js の Connect、Express、および「ミドルウェア」とは何ですか? 質問する

JavaScript についてはよく知っているのですが、Node.js エコシステムのこれら 3 つのプロジェクトが具体的に何をするのかよくわかりません。Rails の Rack のようなものですか? 誰か説明してもらえませんか?

ベストアンサー1

[更新: 4.0 リリース以降、Express は Connect を使用しなくなりました。ただし、Express は Connect 用に作成されたミドルウェアと互換性があります。私の元の回答は以下の通りです。

これについて質問していただいて嬉しいです。なぜなら、これは Node.js を検討している人にとって間違いなくよくある混乱点だからです。私ができる限り説明しようと思います。

  • Node.js自体はhttpモジュール。このcreateServerメソッドは、HTTP リクエストに応答するために使用できるオブジェクトを返します。そのオブジェクトはプロトタイプを継承しますhttp.Server

  • 接続するcreateServerは、の拡張バージョンを継承したオブジェクトを返すメソッドも提供していますhttp.Server。Connectの拡張機能は、主にプラグインを簡単にするためにあります。ミドルウェアそのため、Connect は「ミドルウェア フレームワーク」と表現され、Ruby の Rack によく例えられます。

  • 急行Connect が http モジュールに対して行うことと同じことが Connect に対して行われます。つまり、 createServerConnect のServerプロトタイプを拡張するメソッドが提供されます。つまり、Connect のすべての機能が備わっているほか、ビューのレンダリングとルートを記述するための便利な DSL も備わっています。Ruby の Sinatra は良い例えです。

  • さらに Express を拡張するフレームワークも他にもあります。ザッパたとえば、CoffeeScript、サーバー側 jQuery、テストのサポートを統合します。

「ミドルウェア」が意味する具体的な例を次に示します。上記のいずれも、そのままでは静的ファイルを提供しません。ただし、connect.static(Connect に付属するミドルウェア) を追加し、ディレクトリを指すように構成すると、サーバーはそのディレクトリ内のファイルへのアクセスを提供します。Express は Connect のミドルウェアも提供することに注意してください。express.staticは と同じですconnect.static。(どちらも最近まで として知られていましたstaticProvider。)

私の印象では、最近ではほとんどの「本物の」Node.js アプリが Express で開発されています。Express で追加される機能は非常に便利で、必要に応じてすべての低レベルの機能も利用できます。

おすすめ記事