JQuery шаблоны на стороне сервера - PullRequest
6 голосов
/ 17 ноября 2010

Кто-нибудь пытался использовать шаблоны jQuery (или любые другие шаблоны на основе JavaScript) на стороне сервера с чем-то вроде env.js ?

Я подумываю о том, чтобы попытаться выяснить, какие преимущества можно получить, предоставляя одинаковые шаблоны на стороне клиента или сервера веб-приложения, но я надеялся, что кто-то уже может иметь некоторый опыт или знать о существующий проект делает это. Мне было бы особенно интересно узнать о любых проблемах с производительностью, с которыми я мог бы столкнуться, по сравнению с некоторыми более традиционными шаблонизаторами.

Напомним: кто-нибудь когда-либо использовал шаблоны jquery на сайте сервера? Если да, были ли проблемы с производительностью или другие проблемы, с которыми я мог столкнуться?

Ответы [ 3 ]

4 голосов
/ 27 мая 2011

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} переводится во что-то очень похожее на функцию (данные, опции) {return "foo" + bar;} по модулю некоторого сбрасывания со строки bar

...

Это позволит использовать этот шаблонизатор в среде javascript на стороне сервера, такой как node.js или java / rhino

Буду рад обратной связи и смогу помочь вам начать работу.

</plug>

0 голосов
/ 27 мая 2011

Довольно просто написать код на стороне сервера для обработки шаблонов jQuery.

Здесь некоторые очень базовый код vb.net , который я создал и который вернетрезультат строки шаблона jquery для массива любых объектов.В настоящее время он выполняет только замену значений данных

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 только для замены нескольких тегов.

0 голосов
/ 17 ноября 2010

Мой друг, работавший над проектом распределенного генетического программирования, использовал систему шаблонов на стороне js sevrer для управления всеми веб-работниками, созданными во всех браузерах пользователей.Его код здесь: github .Я не знаю, насколько это будет полезно, но я знаю, что это было довольно просто реализовать и сделать некоторые удивительные вещи.Насколько легко он это нашел, я бы порекомендовал систему шаблонов js.

...