回答:
あなたはこの方法でそれを行うことができます:
ejsをインストールします。
npm install ejs
app.jsのテンプレートエンジンをejsとして設定します
// app.js
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
これで、ルートファイルでテンプレート変数を割り当てることができます
// ./routes/index.js
exports.index = function(req, res){
res.render('index', { title: 'ejs' });};
次に、/ viewsディレクトリにHTMLビューを作成できます。
title
をhtmlファイルに印刷するにはどうすればよいですか?
JadeはHTML入力も受け入れます。
純粋なhtmlの送信を開始するには、行末にドットを追加するだけです。
それでうまくいく場合は、次のことを試してください。
doctype html
html. // THAT DOT
<body>
<div>Hello, yes this is dog</div>
</body>
PS-HTMLを閉じる必要はありません-これはJadeによって自動的に行われます。
response.sendFile
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});)
res.sendfile(path, [options], [fn]])
指定されたパスでファイルを転送します。
ファイル名の拡張子に基づいて、Content-Type応答ヘッダーフィールドを自動的にデフォルト設定します。コールバック
fn(err)
は、転送が完了したとき、またはエラーが発生したときに呼び出されます。
res.sendFile
httpキャッシュヘッダーを介してクライアント側のキャッシュを提供しますが、サーバー側のファイルコンテンツはキャッシュしません。上記のコードは、リクエストごとにディスクにヒットします。
sendfile
ファイルからバイトを送信するだけなので、テンプレートを作成することはできません。さらに、sendfile
リクエストが来るたびにディスクにアクセスすることになるので、このような使用はお勧めしません-大きなボトルネックです。トラフィックの多いページでは、実際にはメモリ内キャッシュを実行する必要があります。
私の意見では、htmlファイルを読み取るためだけにejsと同じ大きさのものを使用することは、少なからず強引です。非常にシンプルなhtmlファイル用の独自のテンプレートエンジンを作成しただけです。ファイルは次のようになります。
var fs = require('fs');
module.exports = function(path, options, fn){
var cacheLocation = path + ':html';
if(typeof module.exports.cache[cacheLocation] === "string"){
return fn(null, module.exports.cache[cacheLocation]);
}
fs.readFile(path, 'utf8', function(err, data){
if(err) { return fn(err); }
return fn(null, module.exports.cache[cacheLocation] = data);
});
}
module.exports.cache = {};
私はhtmlEngineを呼び出しました。使用方法は次のように指定するだけです。
app.engine('html', require('./htmlEngine'));
app.set('view engine', 'html');
app.register()
app.engine()
Express 3 では、テンプレートエンジンの処理方法が変更されたため、現在は廃止されていません。
Express 2.xテンプレートエンジンの互換性には、次のモジュールのエクスポートが必要です。
exports.compile = function(templateString, options) { return a Function; };
Express 3.xテンプレートエンジンは、次のものをエクスポートする必要があります。
exports.__express = function(filename, options, callback) { callback(err, string); };
テンプレートエンジンがこのメソッドを公開しない場合でも、あなたは運が悪いわけではありません。この
app.engine()
メソッドを使用すると、任意の関数を拡張機能にマップできます。マークダウンライブラリがあり、.mdファイルをレンダリングしたいが、このライブラリがExpressをサポートしていないapp.engine()
場合、呼び出しは次のようになります。var markdown = require('some-markdown-library'); var fs = require('fs'); app.engine('md', function(path, options, fn){ fs.readFile(path, 'utf8', function(err, str){ if (err) return fn(err); str = markdown.parse(str).toString(); fn(null, str); }); });
「プレーン」なHTMLを使用できるテンプレートエンジンを探している場合は、非常に高速であるためdoTをお勧めします。
もちろん、Express 3のビューモデルでは、ビューのキャッシュはユーザー(またはテンプレートエンジン)に任されていることに注意してください。本番環境では、ビューをメモリにキャッシュして、リクエストごとにディスクI / Oを実行しないようにする必要があります。
EJSは、HTMLであるが変数をサポートするテンプレートで使用できます。以下は、ExpressでEJSを使用する方法に関する優れたチュートリアルです。
http://robdodson.me/blog/2012/05/31/how-to-use-ejs-in-express/
レンダーエンジンがヒスイではなくhtmlを受け入れるようにするには、次の手順に従います。
あなたのディレクトリにconsolidateとswigをインストールしてください。
npm install consolidate
npm install swig
次の行をapp.jsファイルに追加します
var cons = require('consolidate');
// view engine setup
app.engine('html', cons.swig)
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', ‘html');
「views」フォルダ内に.htmlとしてビューテンプレートを追加します。ノードサーバーを再起動し、ブラウザーでアプリを起動します。
これは問題なくhtmlをレンダリングしますが、JADEを学習して使用することをお勧めします。Jadeは素晴らしいテンプレートエンジンであり、これを学ぶことで、デザインとスケーラビリティを向上させることができます。
最初に以下の行を使用して、テンプレートエンジンの互換性バージョンを確認します
express -h
次に、リストからビューを使用する必要があります。ビューを選択しない
express --no-view myapp
これで、パブリックフォルダー内のすべてのhtml、css、js、および画像を使用できます。
まあ、それはあなたが静的ファイルを提供したいようです。そして、そのためのページがあります http://expressjs.com/en/starter/static-files.html
誰もドキュメントにリンクしていない奇妙な。
ルートがすでに定義されているか、それを行う方法を知っていることを考慮してください。
app.get('*', function(req, res){
res.sendfile('path/to/your/html/file.html');
});
注:*はすべてを受け入れるため、このルートは他のすべてのルートの後に配置する必要があります。
JadeはHTMLをサポートしているので、.html拡張子だけが必要な場合は、これを行うことができます
// app.js
app.engine('html', require('jade').renderFile);
app.set('view engine', 'html');
次に、ビューのファイルをjadeからhtmlに変更します。
jade ..などを使用せずにnodeJSでプレーンHTMLを使用する場合:
var html = '<div>'
+ 'hello'
+ '</div>';
Personnaly私はそれでうまくやっています。
制御時の利点はシンプルです。'<p>' + (name || '') + '</p>'
、三項などのいくつかのトリックを使用できます。
ブラウザでインデントされたコードが必要な場合は、次のようにすることができます。
+ 'ok \
my friend \
sldkfjlsdkjf';
\ tまたは\ nを自由に使用できます。しかし、私はなしが好きです、そしてそれはより速いです。