Node.jsチュートリアル をフォローしています。
よくわからない2行は次のとおりです。
app.set('view engine', 'html');
app.engine('html', hbs.__express);
ドキュメント のapp.set
を確認しましたが、次のように表示されます。
設定名を値に割り当てます。
しかし、私の質問は、これを使用することの関連性は何ですか。私はそれをグーグルで検索し、app.engine
が使用されている場所ではどこでもapp.set
が以前に呼び出されました。
app.set
の前にapp.engine
を使用することの重要性を教えてください。
[〜#〜]編集[〜#〜]
次の行を見つけましたが、テンプレートエンジンを初めて使用しているため、まだ不明です。
ただし、上記の
view engine
ディレクティブを使用することで、HTMLファイルを動的として扱うようにExpressに指示できます。
最初の行app.set
は、使用するテンプレートエンジンをExpressに指示します。この場合はhtml
です。これには、その名前でインストールされたテンプレートエンジンがあり、このテンプレートエンジンが.html
拡張子のファイルに責任があると感じる必要があります。
ejs
を使用している場合、たとえば、この1行で十分です(ただし、通常、ビューファイルを検索するディレクトリを定義するapp.set
への2回目の呼び出しもあります)。
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
ここで、anotherファイル拡張子にテンプレートエンジンを使用したいとします。 ejs
エンジンが.ejs
ファイルだけでなく、.html
ファイルも処理するようにします。
この場合、2行目を使用できます。これは、拡張子がhtml
のファイルの場合、ファイルをレンダリングするためにhbs.__express
関数を呼び出すことをExpressに指示します(実際にはhtml
というテンプレートエンジンがないため)。これは基本的に、hbs
エンジンで.html
ファイルをレンダリングすることを意味します。
__express
関数は、Node.jsでのテンプレートエンジンのデファクトスタンダードであり、Expressと互換性があります。Expressが簡単に見つけられるように、レンダリング関数を呼び出す必要があります(名前が異なる場合は、これも構成しますが、それは別の話です)。
お役に立てれば。