106

Node.JSでExpressを使用しているときにJadeを取り除くにはどうすればよいですか?プレーンHTMLを使用したいだけです。他の記事では、最新バージョンでは廃止されたapp.register()が推奨されていることを確認しました。

4

13 に答える 13

81

次の方法で実行できます。

  1. ejs をインストールします。

    npm install ejs
    
  2. app.js でテンプレート エンジンを ejs として設定します。

    // app.js
    app.engine('html', require('ejs').renderFile);
    app.set('view engine', 'html');
    
  3. ルートファイルで、テンプレート変数を割り当てることができます

    // ./routes/index.js
    exports.index = function(req, res){
    res.render('index', { title: 'ejs' });};
    
  4. 次に、/views ディレクトリに HTML ビューを作成できます。

于 2014-03-01T15:11:24.487 に答える
62

Jade は html 入力も受け入れます。
純粋な HTML の送信を開始するには、行末にドットを追加するだけです。
それで問題が解決する場合は、次を試してください。

doctype html              
html. // THAT DOT
    <body>     
        <div>Hello, yes this is dog</div>
    </body>

PS - HTML を閉じる必要はありません - これは Jade によって自動的に行われます。

于 2013-10-14T19:43:22.767 に答える
19

Express 3以降、簡単に使用できますresponse.sendFile

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});)

公式エクスプレスAPIリファレンスから:

res.sendfile(path, [options], [fn]])

指定されたパスにファイルを転送します。

ファイル名の拡張子に基づいて、Content-Type 応答ヘッダー フィールドを自動的にデフォルト設定します。コールバックfn(err)は、転送が完了したとき、またはエラーが発生したときに呼び出されます。

警告

res.sendFilehttp キャッシュ ヘッダーを介してクライアント側のキャッシュを提供しますが、サーバー側ではファイルの内容をキャッシュしません。上記のコードは、リクエストごとにディスクをヒットします。

于 2013-12-14T05:35:44.400 に答える
16

私の意見では、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');
于 2014-05-23T16:27:55.627 に答える
10

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);
  });
});

'plain' HTMLを使用できるテンプレートエンジンを探している場合は、非常に高速であるため、doTをお勧めします。

もちろん、Express 3ビューモデルでは、ビューのキャッシュはユーザー(またはテンプレートエンジン)に任されていることに注意してください。実稼働環境では、要求ごとにディスクI / Oを実行しないように、ビューをメモリにキャッシュすることをお勧めします。

于 2012-07-15T21:56:04.660 に答える
4

レンダリング エンジンが jade の代わりに html を受け入れるようにするには、次の手順に従います。

  1. consolidateswigをディレクトリにインストールします。

     npm install consolidate
     npm install swig
    
  2. 次の行を 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');
    
  3. ビュー テンプレートを「views」フォルダー内に .html として追加します。ノード サーバーを再起動し、ブラウザでアプリを起動します。

これで問題なく html がレンダリングされますが、JADE を学習して使用することをお勧めします。Jade は素晴らしいテンプレート エンジンであり、これを学習することで、より優れたデザインとスケーラビリティを達成することができます。

于 2016-02-14T20:20:41.950 に答える
1

Jade は HTML をサポートしているので、.html ext だけが必要な場合は、これを行うことができます。

// app.js
app.engine('html', require('jade').renderFile);
app.set('view engine', 'html');

次に、ビュー内のファイルを jade から html に変更するだけです。

于 2016-02-03T19:37:53.840 に答える
-10

jade..などを使用せずに、nodeJSでプレーンhtmlを使用する場合:

var html = '<div>'
    + 'hello'
  + '</div>';

個人的にはそれでうまくいっています。

利点は、制御時の単純さです。'<p>' + (name || '') + '</p>'、三項などのいくつかのトリックを使用できます

ブラウザでインデントされたコードが必要な場合は、次のことができます。

+ 'ok \
  my friend \
  sldkfjlsdkjf';

\t または \n を自由に使用します。しかし、私はなしの方が好きです。さらに、より高速です。

于 2012-07-15T21:25:29.920 に答える