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に、違いとルーターで何ができるかを説明した良い記事があります。
要約する
ルーターを使用すると、コードをより簡単にモジュール化できます。ルーターは次のように使用できます。
- 基本ルート:ホーム、アバウト
- ミドルウェアをルーティングして、リクエストをコンソールに記録します
- パラメータ付きのルート
- 特定のパラメーターを検証するためのパラメーターのミドルウェアのルート
- 特定のルートに渡されたパラメーターを検証します
ノート:
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リクエストメソッドを追加できます。