express.Routerとapp.getの違いは?



Differences Between Express



解決:

app.js

var express = require( 'express')、dogs = require( './ routes / dogs')、cats = require( './ routes / cats')、birds = require( './ routes / birds'); var app = express(); app.use( '/ dogs'、dogs); app.use( '/ cats'、cats); app.use( '/ birds'、birds); app.listen(3000);

dogs.js



var express = require( 'express'); var router = express.Router(); router.get( '/'、function(req、res){res.send( '/ dogsルートのGETハンドラー');}); router.post( '/'、function(req、res){res.send( '/ dogsルートのPOSTハンドラー');}); module.exports =ルーター;

いつvar app = express()が呼び出されると、アプリオブジェクトが返されます。これを次のように考えてください メインアプリ

いつvar router = express.Router()が呼び出されますが、少し異なります ミニアプリ が返されます。の背後にある考え方 ミニアプリ つまり、アプリ内の各ルートは非常に複雑になる可能性があり、そのすべてのコードを個別のファイルに移動することでメリットが得られます。各ファイルのルーターは ミニアプリ 、と非常によく似た構造を持っています メインアプリ



上記の例では、 / dogs ルートは独自のファイルに移動されたため、混乱することはありません。 メインアプリ 。のコード / cats/ birds 独自のファイルでも同様に構造化されます。このコードを3つに分けることによって ミニアプリ 、それぞれのロジックを個別に操作でき、他の2つにどのように影響するかを心配する必要はありません。

3つのルートすべてに関連するコード(ミドルウェア)がある場合は、 メインアプリ 、 の前にapp.use(...)が呼び出します。これらのルートの1つだけに関連するコード(ミドルウェア)がある場合は、そのルートのファイルにのみ入れることができます。


Express4.0には新しいルーターが付属しています。サイトに記載されているように:



express.Routerクラスを使用して、モジュール式のマウント可能なルートハンドラーを作成できます。ルーターインスタンスは、完全なミドルウェアおよびルーティングシステムです。このため、ミニアプリと呼ばれることがよくあります。

https://scotch.io/tutorials/learn-to-use-the-new-router-in-expressjs-4に、違いとルーターで何ができるかを説明した良い記事があります。

要約する

ルーターを使用すると、コードをより簡単にモジュール化できます。ルーターは次のように使用できます。

  1. 基本ルート:ホーム、アバウト
  2. ミドルウェアをルーティングして、リクエストをコンソールに記録します
  3. パラメータ付きのルート
  4. 特定のパラメーターを検証するためのパラメーターのミドルウェアのルート
  5. 特定のルートに渡されたパラメーターを検証します

ノート:

NSExpress 4で削除されたapp.routerオブジェクトは、Express 5で復活しました。新しいバージョンでは、アプリが明示的にロードする必要があったExpress 3とは異なり、これはベースExpressルーターへの単なる参照です。 。


app.route( '/ book')。get(function(req、res){res.send( 'Get a random book')})。post(function(req、res){res.send( 'Post a random本') })

上記の例のように、ルートの下に別のHTTPリクエストメソッドを追加できます。