express.Router と app.get の違いは何ですか? 質問する

express.Router と app.get の違いは何ですか? 質問する

NodeJS と Express 4 を使い始めたのですが、少し混乱しています。Express の Web サイトを読んでいるのですが、ルート ハンドラーをいつexpress.Router使用すればいいのか、いつ を使用すればいいのかがわかりません。

たとえば、ユーザーがアクセスしたときにページなどを表示したい場合は、次のように/showします。

var express = require('express')    
var app = express()    
app.get("/show", someFunction)  

最初は、これは古い (Express 3 の場合) と思いました。それは正しいですか、それとも Express 4 でもこの方法ですか?

Express 4 でこの方法を実行する場合、何express.Routerに使用されますか?

上記とほぼ同じ例を読みましたが、以下を使用していますexpress.Router:

var express = require('express');
var router = express.Router();
router.get("/show", someFunction)

では、両方の例の違いは何でしょうか?

単純なテスト Web サイトを作成したい場合は、どれを使用すればよいですか?

ベストアンサー1

アプリ

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);

犬.js

var express = require('express');

var router = express.Router();

router.get('/', function(req, res) {
    res.send('GET handler for /dogs route.');
});

router.post('/', function(req, res) {
    res.send('POST handler for /dogs route.');
});

module.exports = router;

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

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

上記の例では、/dogsルートのコードは、メイン アプリが乱雑にならないように独自のファイルに移動されています。 /cats/birdsのコードは、独自のファイルで同様に構成されます。 このコードを 3 つのミニ アプリに分割することで、各アプリのロジックを個別に処理でき、他の 2 つにどのような影響を与えるかを心配する必要がなくなります。

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

おすすめ記事