[解決済み] res.render() が呼び出されたファイルの場所に応じて Express のビューフォルダを変更する。
2023-04-18 17:11:20
質問
res.render()を呼び出したときに、Expressのビューフォルダを変更したいのですが、どうすればいいですか?
例えば、/folder/file.js 内で res.render(viewName) を呼び出した場合、Express は /folder/views 内のビューを探すようにしたいです。
ファイルが /folder1/folder2/file.js の中にある場合、Express は /folder1/folder2/views の中にあるビューを検索するようにしたいです。
それは可能ですか?
どのように解決するのですか?
メソッドを使用することができます。
set()
を使ってexpressのデフォルト設定を再定義することができます。
app.set('views', path.join(__dirname, '/yourViewDirectory'));
動的なパスの変更には、次のようなことができます。
var express = require('express');
var path = require('path');
var app = express();
app.engine('jade', require('jade').__express);
app.set('view engine','jade');
app.customRender = function (root,name,fn) {
var engines = app.engines;
var cache = app.cache;
view = cache[root+'-'+name];
if (!view) {
view = new (app.get('view'))(name, {
defaultEngine: app.get('view engine'),
root: root,
engines: engines
});
if (!view.path) {
var err = new Error('Failed to lookup view "' + name + '" in views directory "' + root + '"');
err.view = view;
return fn(err);
}
cache[root+'-'+name] = view;
}
try {
view.render(opts, fn);
} catch (err) {
fn(err);
}
}
app.get('/', function(req, res) {
app.customRender(path.join(__dirname, '/path/to/user/'),'index',function (err,html) {
if (err)
res.send(404);
else
res.send(200,html);
});
});
app.listen(3000);
関連
-
[解決済み】Express.js req.bodyが未定義です。
-
[解決済み] express.Routerとapp.getの違い?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] なぜ "npm install" は package-lock.json を書き換えてしまうのですか?
-
[解決済み] Node.jsの例外処理のベストプラクティス
-
[解決済み] ExpressJS アプリケーションをどのように構成するか?
-
[解決済み] nodeやExpressを使用してJSONを返す正しい方法
-
[解決済み】Expressで完全なURLを取得する方法は?
-
[解決済み】node_modules フォルダにあるスクリプトをインクルードする方法は?
-
[解決済み】基本的なHTMLビューをレンダリングしますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】MongoClient v3.0使用時、db.collectionは関数ではない
-
[解決済み】ENOENT, そのようなファイルまたはディレクトリがありません。
-
[解決済み】MongoDBのデータ/DBが見つからない
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
webpack ENOENTソリューションの起動
-
[解決済み] Expectアサーションの型エラー -> expect(...).toExistは関数ではない
-
[解決済み] AWS s3 api error: specified bucket does not exist.
-
[解決済み] ノードマータ予期せぬフィールド
-
[解決済み] NPMが同じエラーで固まる EISDIR: ディレクトリに対する不正な操作、エラーで読み込み (ネイティブ)
-
[解決済み] Mongoose Schema がモデルとして登録されていません。