шаблоны jQuery на стороне сервера

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

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

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


person Matt Sheppard    schedule 16.11.2010    source источник
comment
В чем именно заключается ваш вопрос? (см. также Есть ли механизм шаблонов для Node.js?)   -  person Matt Ball    schedule 17.11.2010
comment
Сторона сервера более надежна, потому что на стороне клиента вы не знаете о спецификациях пользователей и может значительно снизить производительность на стороне пользователя.   -  person RobertPitt    schedule 17.11.2010
comment
Возможно, вы захотите посмотреть блог @ getify (blog.getify.com) - он разглагольствует о паритете шаблонов и механизмы проверки между клиентом и сервером постоянно   -  person Pointy    schedule 17.11.2010
comment
Болл - Подведем итоги: кто-нибудь когда-нибудь использовал шаблоны jquery на сайте сервера? Если да, то были ли проблемы с производительностью или другие проблемы, с которыми я мог бы столкнуться?   -  person Matt Sheppard    schedule 17.11.2010
comment
Только что нашел этот ответ, который предлагает 2 средства визуализации шаблонов jQuery в PHP и .Net соответственно ... stackoverflow.com/questions/4485419/   -  person digiguru    schedule 27.05.2011


Ответы (3)


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; } по модулю некоторого раскрытия бара

...

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

Я хотел бы получить обратную связь и помочь вам начать работу.

</plug>

person Mike Samuel    schedule 26.05.2011

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

person David Warshow    schedule 17.11.2010

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

person digiguru    schedule 26.05.2011
comment
Визуализировать простейшие шаблоны case легко, но что происходит, когда шаблоны включают вызовы функций для функций JavaScript (что не редкость в реальных сценариях)? Это сложно без фактического использования JavaScript на стороне сервера. - person Dave Ward; 27.05.2011