1. ホーム
  2. node.js

[解決済み] Expressにおけるapp.use()とrouter.use()の相違点

2022-12-18 15:16:50

質問

expressのドキュメントを読んでいたら、以下の2つの用語が見つかりました。 app.use();router.use();

私が知っているのは app.use(); は node で ミドルウェアのマウント をパスでマウントするために使われ、ほとんどのnodeアプリでよく使われます。 router.use(); は同じなのか、違うなら何が違うのか?

私はルーターについて読みました ここで . 私はまた、SOで同様の質問を見つけた express.Routerとapp.getを使ったルーティングの違いは何ですか? app.all('*')とapp.use('/')の違いについて教えてください。 は、しかし、彼らは本当に私の質問に答えるものではありません。ありがとうございます。

どのように解決するのですか?

router.get はサブパスを定義するためだけのものです。この例で考えてみましょう。

var router = express.Router();

app.use('/first', router); // Mount the router as middleware at path /first

router.get('/sud', smaller);

router.get('/user', bigger);

  • もし、あなたが /first/sud とすると smaller 関数が呼ばれます。
  • もしあなたが /first/user を開くと bigger 関数が呼ばれます。

要するに app.use('/first', router) はミドルウェアをパス /first で、次に router.get はそれに応じてサブパスを設定します。


しかし、代わりに以下のようにすると

app.use('/first', fun);

app.get('/sud', bigger);

app.get('/user', smaller);

  • もし、あなたが /first をブラウザで表示します。 fun が呼び出されます。
  • の場合 /sud , bigger が呼ばれます。
  • の場合 /user , smaller が呼び出されます。

しかし /first/sud については、どの関数も呼び出されないことを覚えておいてください。

このリンクも役に立つかもしれません。 http://expressjs.com/api.html#router