JQuery шаблоны на стороне сервера
Кто-нибудь пытался использовать шаблоны jQuery (или любые другие шаблоны на основе JavaScript) на стороне сервера с чем-то вроде env.js?
Я подумываю о том, чтобы попытаться выяснить, какие преимущества можно получить, имея возможность отображать идентичные шаблоны на стороне клиента или на стороне веб-приложения, но я надеялся, что кто-то уже может иметь некоторый опыт или знать, что существующий проект выполняет этот. Мне было бы особенно интересно узнать о любых проблемах с производительностью, с которыми я мог бы столкнуться, по сравнению с некоторыми более традиционными шаблонизаторами.
Напомним: кто-нибудь когда-либо использовал шаблоны jquery на сайте сервера? Если да, были ли проблемы с производительностью или другие проблемы, с которыми я мог столкнуться?
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} переводится во что-то очень похожее на функцию (данные, опции) { return "foo" + bar; } по модулю какой-то заглубления бара
...
Это позволит использовать этот шаблонизатор в среде javascript на стороне сервера, такой как node.js или java/rhino.
Я хотел бы получить обратную связь и могу помочь вам начать.
</plug>
Мой друг, работавший над распределенным проектом по генетическому программированию, использовал систему шаблонов на стороне js sevrer для управления всеми веб-работниками, появляющимися во всех браузерах пользователей. Его код здесь: github. Я не знаю, насколько это будет полезно, но я знаю, что это было довольно просто реализовать и сделать некоторые удивительные вещи. Насколько легко он нашел это, я бы порекомендовал систему шаблонов JS это.
Довольно просто написать код на стороне сервера для обработки шаблонов 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://stackru.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://stackru.com'>First Object</a></p>
<p><a href='http://stackexchange.com'>Second Object</a></p>
Это будет работать намного быстрее, чем порождение поддельного объекта браузера на сервере, и запуск всей библиотеки jQuery только для замены нескольких тегов.