Domanda

I modelli sono un'attività piuttosto salutare nei linguaggi di programmazione consolidati, ma ce ne sono di buoni che possono essere elaborati in JavaScript?

Per " modello " Intendo un documento che accetta un oggetto dati come input, inserisce i dati in una sorta di linguaggio di markup serializzato e genera il markup. Esempi noti sono JSP , il PHP originale, XSLT .

Per " buono " Voglio dire che è dichiarativo e facile per un autore HTML scrivere, che è robusto e che è supportato anche in altre lingue. Qualcosa di meglio delle opzioni che conosco. Alcuni esempi di "non buono":


String math:

element.innerHTML = "<p>Name: " + data.name
    + "</p><p>Email: " + data.email + "</p>";

chiaramente troppo ingombrante, struttura HTML non apparente.


XSLT:

<p><xsl:text>Name: </xsl:text><xsl:value-of select="//data/name"></p>
<p><xsl:text>Email: </xsl:text><xsl:value-of select="//data/email"></p>

// Strutturalmente funziona bene, ma ammettiamolo, XSLT confonde gli sviluppatori HTML.


Trimpath:

<p>Name: ${data.name}</p><p>Email: ${data.email}</p>

// Questo è carino, ma il processore è supportato solo in JavaScript e il linguaggio è una specie di primitivo ( http://code.google.com/p/trimpath/wiki/JavaScriptTemplateSyntax ).


Mi piacerebbe vedere un sottoinsieme di JSP o ASP o PHP trasferiti nel browser, ma non l'ho trovato.

Cosa usano le persone in questi giorni in JavaScript per il loro modello?

Addendum

Dopo alcuni mesi ci sono state molte lingue modello praticabili pubblicate qui, ma la maggior parte di esse non è utilizzabile in nessun'altra lingua. La maggior parte di questi modelli non può essere utilizzata al di fuori di un motore JavaScript.

L'eccezione è quella di Microsoft: è possibile elaborare lo stesso ASP nel browser o in qualsiasi altro motore ASP. Questo ha il suo set di problemi di portabilità, dal momento che sei legato ai sistemi Microsoft. L'ho contrassegnata come risposta, ma sono ancora interessato a soluzioni più portatili.

Grazie per tutto l'input finora!

È stato utile?

Soluzione

Esiste la funzionalità Modello lato client in arrivo nel prossimo ASP.NET AJAX 4.0.

http: // encosia.com/2008/07/23/sneak-peak-aspnet-ajax-4-client-side-templating/

Inoltre, è possibile utilizzare la libreria Microsoft AJAX (che è la parte JavaScript di ASP.NET AJAX) da sola, senza utilizzare ASP.NET.

http://www.asp.net/ajax/downloads/

Altri suggerimenti

John Resig ha un mini motore di template javascript in http://ejohn.org/blog/javascript-micro-templating/

Potresti voler dare un'occhiata a Moustache - è un linguaggio modello davvero portatile e semplice con supporto javascript tra le altre lingue .

L'ho trovato oggi, ma non l'ho provato ...

http://beebole.com/pure/

I modelli di chiusura sono un sistema di template abbastanza robusto di Google e funzionano per entrambi Javascript e Java. Ho avuto buone esperienze nell'usarli.

ExtJS ha una classe di template eccezionale chiamata Ext.XTemplate: http://extjs.com/deploy/dev/docs/?class=Ext.XTemplate

Uso i modelli Google Closure . http://code.google.com/closure/templates/docs/helloworld_js.html

Semplice templating, BiDi , auto-escape, ottimizzato per la velocità. Inoltre, l'analisi del modello avviene come fase di creazione, quindi non rallenta il client. Un altro vantaggio è che puoi utilizzare gli stessi modelli da Java, nel caso in cui tu debba generare il tuo HTML sul server per gli utenti con JavaScript disabilitato.

Tenjin http://www.kuwata-lab.com/tenjin/ Potrebbe sii quello che stai cercando. Non l'ho usato, ma sembra buono.

Ho scritto http://google-caja.googlecode.com/svn/changes/mikesamuel/string-interpolation-29-Jan-2008/trunk/src/js/com/google /caja/interp/index.html che descrive un sistema di template che collega l'interpolazione di stringhe su javascript in un modo che impedisce gli attacchi XSS scegliendo lo schema di escape corretto basato sul contesto precedente.

Eccone uno implementato in jQuery per il linguaggio di template Smarty. http://www.balupton.com/sandbox/jquery-smarty/demo/

Una caratteristica impressionante è il supporto per gli aggiornamenti dinamici. Pertanto, se aggiorni una variabile modello, verrà aggiornata in qualsiasi punto del modello in cui viene utilizzata quella variabile. Abbastanza elegante.

Puoi anche agganciare le modifiche alle variabili usando un evento onchange. Quindi questo è utile per dire effetti performanti o AJAX quando si dice la variabile "pagina" modifiche ;-)

Se stai utilizzando Script # potresti prendere in considerazione SharpTemplate , un motore di template HTML altamente tipizzato e super efficiente.

Modelli distali http://code.google.com/p/distal è un po 'come la tua demo XSLT ma più semplice:

<p>Name: <span data-qtext="data.name"></span></p>
<p>Email: <span data-qtext="data.email"></span></p>

Se si utilizza Rhino (un'implementazione Java di JavaScript) è possibile eseguire il linguaggio modello JavaScript di la tua scelta anche sul server.

Sai anche con certezza che i risultati del modello di server e browser sono identici. (Se il modello è implementato in 2 lingue, potrebbero esserci alcune sottili differenze tra le implementazioni.)

... Ma ora 5 anni dopo (ovvero l'anno 2016), con Java 8, invece, useresti Nashorn, non Rhino. Ecco un'introduzione a Nashorn e se scorri un po 'verso il basso, troverai un esempio di Nashorn + il linguaggio modello Mustahce: http://www.oracle.com/technetwork/articles/java /jf14-nashorn-2126515.html

(Personalmente utilizzo il lato server React.js, tramite Nashorn (ma React non è un linguaggio di template).)

Una scelta forse interessante è https://github.com/rexxars/react-markdown che è un modo piuttosto interessante per includere il markdown nell'interfaccia utente web basata su React. L'ho provato, funziona abbastanza bene, anche se i documenti mi portano a capire che il rendering HTML ha acquisito alcuni problemi nel ramo 3.x. Tuttavia, sembra un'opzione praticabile per determinati usi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top