2010-11-16 10 views
6

Hat jemand versucht, jQuery templates (oder jedes andere JavaScript-basierte Templating) auf der Serverseite mit etwas wie env.js zu verwenden?jQuery-Vorlagen auf der Serverseite

Ich überlege, es zu sehen, welche Vorteile durch die Möglichkeit, identische Vorlagen auf der Client- oder Server-Seite einer Webanwendung zu rendern, gewonnen werden konnte, aber ich hatte gehofft, jemand könnte bereits einige Erfahrung haben oder wissen ein bestehendes Projekt, das dies tut. Ich wäre besonders daran interessiert, über etwaige Leistungsprobleme zu erfahren, die mir im Vergleich zu einer eher traditionellen Templating-Engine begegnen.

Zur Erinnerung: Hat jemand jemals jquery Vorlagen auf der Server-Website verwendet? Wenn ja, gab es irgendwelche Leistungsprobleme oder andere Probleme, denen ich begegnen könnte?

+0

Was genau ist Ihre Frage? (Siehe auch [Gibt es eine Template-Engine für Node.js?] (http: // stackoverflow.com/questions/1787716/is-there-a-template-engine-for-node-js)) –

+0

Server-Seite ist zuverlässiger, weil Client-Seite Sie nicht über die Benutzer-Spezifikation wissen, und könnte die Leistung auf Benutzer-Ende – RobertPitt

+2

dramatisch verringern Vielleicht möchten Sie @ Getifys Blog (http://blog.getify.com/) betrachten - er schimpft über die Parität der Templating- und Validierungsmechanismen zwischen Client und Server * die ganze Zeit * – Pointy

Antwort

0

Ein Freund von mir, der an einem verteilten Genetic Programming-Projekt arbeitete, verwendete ein js-sevrer-Side-Template-System, um alle Web-Mitarbeiter zu verwalten, die in allen Browsern des Benutzers erstellt wurden. Sein Code ist hier: github. Ich weiß nicht, wie hilfreich es sein wird, aber ich weiß, es war ziemlich einfach zu implementieren und hat einige erstaunliche Dinge getan. Von wie einfach er es fand, würde ich ein js Vorlagensystem es empfehlen.

0

Es ist ziemlich trivial, serverseitigen Code zu schreiben, um die jQuery-Vorlagen zu verarbeiten.

Hier ist some very basic vb.net code Ich habe erstellt, dass das Ergebnis einer jquery Vorlage Zeichenfolge an ein Array von beliebigen Objekten zurückgibt. Derzeit hat es nur der Austausch von Datenwerten

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 

Also, wenn ich in der folgenden ... gesendet

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) 

Es wäre Ausgabe als String

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

Dies funktioniert viel schneller als ein gefälschtes Browserobjekt auf dem Server zu erzeugen und die gesamte jQuery-Bibliothek auszuführen, nur um ein paar Tags zu ersetzen.

+0

Es ist einfach um die einfachsten Fallvorlagen zu rendern, aber was passiert, wenn die Vorlagen Funktionsaufrufe für JavaScript-Funktionen enthalten (was in realen Szenarien nicht ungewöhnlich ist)? Das ist schwierig, ohne JavaScript auf der Serverseite zu verwenden. –

4

env.js ist nicht erforderlich.

<plug shameless="true">

Ich bin in dem Prozess des specing und Neuimplementierung JQuery Vorlagen sie zu ermöglichen, unabhängig von dem DOM verwendet werden. Siehe https://github.com/mikesamuel/jquery-jquery-tmpl-proposal für Code und Demos. Die Spezifikation ist verfügbar unter http://wiki.jqueryui.com/w/page/37898666/Template und es heißt:

Text-centric eher als DOM abhängig. Status: Fertig. Siehe Implementierungen von Abschnitt 12. foo $ {bar} übersetzt etwas, das der Funktion sehr ähnlich ist (Daten, Optionen) {return "foo" + bar; } Einige dethunking von Bar Modulo

...

Dies diese Template-Engine in Server-Seite JavaScript-Umgebung, wie node.js verwenden können, oder java/rhino

Ich würde gerne Feedback und kann Ihnen helfen, loszulegen.

</plug>

Verwandte Themen