0

サーバー側とクライアント側の両方で jquery テンプレートを使用しています。サーバー用にNode.jsでjqtplとexpressモジュールを使用しており、クライアント用にjqueryとそのテンプレートプラグインを使用しています。

可能な限り、クライアントは html の代わりに JSON を受け取り、HTML5 履歴 API を使用して URL を変更し、セッション ナビゲーションを許可して、テンプレート自体を構築します。これが不可能な場合、サーバーは代わりにテンプレートを作成し、html を送信します。

サーバーとクライアントの両方にまったく同じテンプレートがありますが、サーバーには 12 個の .html ファイルの形式であり、クライアントには .js ファイル内のオブジェクトの形式でそれらがあります。

テンプレートを変更または追加するたびに、クライアントの .js ファイルを同じものに変更する必要があり、これは少し面倒です。

私がやりたいことは、.js ファイルがテンプレート フォルダー内のすべての .html ファイルを動的に取得し、それらをオブジェクトにコンパイルすることです。開発が完了すると、変更を探す必要がなくなるため、このファイルはキャッシュされます。

4

2 に答える 2

0

私が探していたのは、Node のファイル システム モジュールです。

http://nodejs.org/docs/v0.4.8/api/fs.html

fs.readdir を使用してフォルダー内のすべてのテンプレート ファイルを検索し、生成された配列を反復処理して、含まれているすべてのファイルを読み取りました。

var templates = {};
fs.readdir("./templates", function(err, files) {
    for(var i = 0, len = files.length; i<len; i++) {
        fs.readFile("./templates/" + files[i], function (err, data) {
            if (err) {
                throw err
            }
            templates[files[i]] = data;
        });
    }
}

そして、明示的に:

app.get("/templates.js", function(req, res){
    res.header("Content-Type", "text/javascript");
    res.end("var templates = { " + JSON.stringify(templates) + " }; ");
});

しかし、サーバー側のテンプレート化の方が自分のニーズにより適していることがわかり、必要に応じて、データだけではなく、レンダリングされた HTML を JSON 応答で送信するようになりました。

于 2011-05-26T19:45:43.793 に答える
0

これがあなたの質問に答えるかどうかはわかりませんが、クライアントとサーバーの両方で同じテンプレート コードを使用することに興味がある場合は、クライアントとサーバーの両方で同じコードを使用できるようにする、 weldを確認する必要があります。

クライアント上の 12 個の html ファイルと 1 個のオブジェクトに関して、何をしているのかもう少し明確にできますか?

可能であれば、コード サンプルは揺るぎません。

于 2011-03-30T04:51:31.193 に答える