6

サーバー側でenv.jsのようなものを使用してjQuery テンプレート(またはその他の JavaScript ベースのテンプレート)を使用しようとした人はいますか?

Web アプリケーションのクライアント側またはサーバー側のいずれかで同一のテンプレートをレンダリングできることによってどのような利点が得られるかを試してみることを検討していますが、誰かがすでにある程度の経験を持っているか、既存のプロジェクトがそれを行っていることを知っていることを望んでいましたこれ。従来のテンプレート エンジンと比較して、発生する可能性のあるパフォーマンスの問題について知りたいと思っています。

要約すると、サーバー サイトで jquery テンプレートを使用したことのある人はいますか? もしそうなら、何かパフォーマンスの問題、または私が遭遇するかもしれない他の問題はありましたか?

4

3 に答える 3

4

env.js不要です。

<plug shameless="true">

私は現在、JQuery テンプレートを仕様化して再実装し、DOM とは独立して使用できるようにしています。コードとデモについては、 https://github.com/mikesamuel/jquery-jquery-tmpl-proposalを参照してください。仕様はhttp://wiki.jqueryui.com/w/page/37898666/Templateで入手でき、次のように書かれています。

DOM 依存ではなくテキスト中心。ステータス: 完了。セクション 12 の実装を参照してください。foo${bar} は、 function (data, options) { return "foo" + bar; と非常によく似たものに変換されます。バーのいくつかのデサンクを法とする

...

これにより、node.js や java/rhino などのサーバー側 JavaScript 環境でこのテンプレート エンジンを使用できるようになります。

フィードバックをお待ちしております。開始するのに役立ちます。

</plug>

于 2011-05-26T22:43:14.680 に答える
0

jQuery テンプレートを処理するためのサーバー側コードを作成するのはかなり簡単です。

これは、jquery テンプレート文字列の結果を任意のオブジェクトの配列に返す、私が作成した非常基本的な vb.net コードです。現在、データ値の置換のみを行います

Public Shared Function RenderTemplate(template As String, list As Array) As String
    Dim myRegexOptions As RegexOptions = RegexOptions.Multiline
    Dim myRegex As New Regex(strRegex, myRegexOptions)
    Dim splits = myRegex.Split(template)
    Dim matches = myRegex.Matches(template)

    Dim i As Integer = 0
    Dim swap As Boolean = False
    Dim str As New StringBuilder
    For Each item In list
        swap = False
        For i = 0 To splits.Length - 1
            If swap Then
                str.Append(CallByName(item, splits(i), CallType.Get, Nothing))
            Else
                str.Append(splits(i))
            End If
            swap = Not swap
        Next
    Next
    Return str.ToString
End Function

したがって、次のように送信した場合...

Dim strTargetString As String = "<p><a href='${Link}'>${Name}</a></p>"
Dim data As New Generic.List(Of TestClass)
data.Add(New TestClass With {.Link = "http://stackoverflow.com", .Name = "First Object"})
data.Add(New TestClass With {.Link = "http://stackexchange.com", .Name = "Second Object"})
Return Render(strTargetString, data.ToArray)

文字列として出力します

<p><a href='http://stackoverflow.com'>First Object</a></p>
<p><a href='http://stackexchange.com'>Second Object</a></p>

これは、サーバー上に偽のブラウザ オブジェクトを生成し、いくつかのタグを置き換えるためだけに jQuery ライブラリ全体を実行するよりもはるかに高速に機能します。

于 2011-05-26T21:58:57.667 に答える
0

分散遺伝的プログラミング プロジェクトに取り組んでいる私の友人は、js サーバー側のテンプレート システムを使用して、すべてのユーザーのブラウザーで生成されたすべての Web ワーカーを管理していました。彼のコードはここにあります: github . それがどれほど役立つかはわかりませんが、実装が非常に簡単で、驚くべきことがいくつかあったことはわかっています。彼がいかに簡単にそれを見つけたかということから、私は js テンプレート システムをお勧めします。

于 2010-11-17T07:44:18.490 に答える