1

サブページにルーティングせずに、node.js、express、および jade で実行される ajax をテンプレート エンジンとして使用する方法を探しています。私はこれを読みました: Node, Express, Ajax, and Jade Example

しかし、これは私にはうまくいきません。ユーザーがページの一部にアクセスできるように、ページの一部へのルートを作成したくありません。Web サイトの一部で変換された jade ファイルを提供したいだけです。

私は次のようなことを考えています:

$( ".trigger" ).on( "click", function() {
    $( ".result" ).load( "ajax/test.jade" );
});

ユーザーがページ全体にアクセスせずにサブページにアクセスできるように、node.jsでルートを設定せずにこれを行うにはどうすればよいですか。

回答ありがとうございます。

4

4 に答える 4

5

ファイルを GET パラメータとして送信するとどうなりますか。

var jade = require('jade'),
    fs = require('fs');

app.get('/ajax', function(req, res) {
    fs.readFile(req.query.file, 'utf8', function (err, data) {
        if (err) throw err;     
        var fn = jade.compile(data);
        var html = fn({});
        res.send(html);
    });
});

のようなリクエストを送信します

/ajax?file=test.jade

そのようなことをすると、ルートは1つだけになります。

于 2013-11-01T20:15:07.357 に答える
0

設定済みであれば、jade テンプレート (または HTML ファイル) を Web サイトの public フォルダーに配置できます

たとえば、app.js では次のようになります。

app.use(express.static(__dirname + '/public'));

テンプレート/ファイルを (または任意のサブフォルダー) に配置します。

/public/example.html

次に$.get、提供したリンクのように、ファイルをロードするために使用できます。

$.get('/example.html', function(result) {
    $('#test').html(result);
});
于 2013-11-01T20:19:40.807 に答える
0

(それでもルートが必要ですが) ajax リクエストの場合は有効なレスポンスのみを提供し、それ以外の場合は 4xx を提供するルートを設定できます

app.get('/path', function(req, res) {
  if(req.xhr)
  {
    ...
  }
});

req.xhrエクスプレスドキュメント

于 2013-11-01T20:01:37.347 に答える