413

NodeJSexpressモジュールのドキュメントでは、コード例にapp.use(...).

関数は何で、useどこで定義されていますか?

4

29 に答える 29

440

アプリケーション オブジェクトは、Express サーバーの作成時にインスタンス化されます。でカスタマイズできるミドルウェアスタックがありますapp.configure()(これは現在、バージョン 4.x で廃止されています)

ミドルウェアをセットアップするには、追加するすべてのミドルウェア レイヤーを呼び出すことがapp.use(<specific_middleware_layer_here>)できます (すべてのパスに対してジェネリックにすることも、サーバーが処理する特定のパスでのみトリガーすることもできます)、Expressミドルウェア スタックに追加します。ミドルウェア層は、 の複数回の呼び出しで 1 つずつ追加することも、1 回の呼び出しuseで連続して一度に追加することもできます。詳細については、useドキュメントを参照してください。

Express ミドルウェアの概念を理解するための例として、アプリ オブジェクトを JSON としてコンソールに記録すると、アプリ ミドルウェア スタック (app.stack) は次のようになります。

stack: 
   [ { route: '', handle: [Function] },
     { route: '', handle: [Function: static] },
     { route: '', handle: [Function: bodyParser] },
     { route: '', handle: [Function: cookieParser] },
     { route: '', handle: [Function: session] },
     { route: '', handle: [Function: methodOverride] },
     { route: '', handle: [Function] },
     { route: '', handle: [Function] } ]

推測できるかもしれませんが、私はapp.use(express.bodyParser())app.use(express.cookieParser())などを呼び出して、これらの高速ミドルウェア「レイヤー」をミドルウェア スタックに追加しました。ルートが空白であることに注意してください。つまり、これらのミドルウェア レイヤーを追加したときに、それらが任意のルートでトリガーされるように指定したことを意味します。上記のスタック出力のミドルウェア レイヤー オブジェクト/user/:idのフィールドに文字列として反映されるパスでのみトリガーされるカスタム ミドルウェア レイヤーを追加した場合。route

各レイヤーは基本的に、ミドルウェアを介してフローに何かを具体的に処理する関数を追加しています。

たとえば、 を追加することbodyParserで、サーバーがエクスプレス ミドルウェアを介して着信要求を確実に処理できるようになります。したがって、受信リクエストの本文の解析は、受信リクエストを処理するときにミドルウェアが実行する手順の一部です。これはすべて、 を呼び出したためですapp.use(bodyParser)

于 2012-07-04T02:52:02.253 に答える
56

useExpress HTTP サーバー オブジェクトのルートで使用されるミドルウェアを構成するメソッドです。メソッドは、Express のベースとなるConnectの一部として定義されます。

Updateバージョン 4.x 以降、Express はConnectに依存しなくなりました。

以前 Express に含まれていたミドルウェア機能は、個別のモジュールになりました。ミドルウェア機能一覧をご覧ください。

于 2012-07-04T02:33:58.887 に答える
3

app.use()ミドルウェアを登録できるメソッドです。

ミドルウェア メソッドは Java のインターセプターのようなもので、このメソッドは常にすべてのリクエストに対して実行されます。

ミドルウェアの目的と使用:-

  1. セッションが期限切れかどうかを確認するには
  2. ユーザー認証と承認用
  3. Cookie(有効期限)を確認する
  4. 応答の前にデータを解析する
于 2019-04-09T11:55:22.343 に答える
2

app.use はアプリケーションレベルのミドルウェアです

app.use() 関数と app.METHOD() 関数を使用して、アプリケーション レベルのミドルウェアをアプリ オブジェクトのインスタンスにバインドします。ここで、METHOD は、ミドルウェア関数が処理する要求の HTTP メソッド (GET、PUT、またはなど) です。 POST) を小文字にします。

を使用してすべてのリクエストを確認できます。たとえば、トークン/アクセス トークンを確認したい場合は、 app.use を使用してリクエスト内のトークンを確認することでミドルウェアを作成する必要があります。

この例は、マウント パスのないミドルウェア関数を示しています。この関数は、アプリがリクエストを受け取るたびに実行されます。

var app = express()

app.use(function (req, res, next) {
  console.log('Time:', Date.now())
  next()
})

https://expressjs.com/en/guide/using-middleware.htmlからの参照

于 2019-07-09T07:38:54.247 に答える
1

app.use
は Express(nodejs ミドルウェア フレームワーク ) によって作成され
ます app.use は、初期化プロセスで特定のクエリを実行するために使用されます
server.js(node)
var app = require('express'); したがって、基本的には、サーバーが起動する たびに呼び出される app.use 関数
app.use(bodyparser.json())

于 2020-03-21T18:16:00.897 に答える
1

簡単に言えばapp.use()、別の関数 (コールバック) をパラメーターとして受け取り、高速アプリ/サーバーにリクエストが送信されるたびに実行される関数です。

app.use 内で渡される関数はミドルウェアとも呼ばれます。ミドルウェアは、高速アプリに存在する関数の単なる派手な名前であり、3 つのパラメーター request、response、next を持ちます。ミドルウェアについて詳しく読むことができます。

ミドルウェアは、リクエストとレスポンスのサイクルの間に呼び出されます。ミドルウェアをすべてのルートに適用するapp.use()場合は、検証、エラーチェックなどを使用または実行できます。

于 2021-06-23T08:40:13.877 に答える