Mi piacerebbe precompilare i miei modelli di Handlebars, ma non sono sicuro di come funzioni in modalità sviluppo.Come utilizzare i modelli precompilati in Handlebars con RequireJS?
È prassi comune eseguire alcuni processi in background come Guard per monitorare costantemente le modifiche ai file modello di Handlebars?
Sto usando RequireJS per inserire i modelli; ad esempio:
define(['jquery', 'handlebars', 'text!templates/my_template'], function($, Handlebars, myTemplate) {
// ...
var data = {"some": "data", "some_more": "data"};
var templateFn = Handlebars.compile(myTemplate);
$('#target').append(templateFn(data));
// ...
});
così ho capito una volta i modelli vengono precompilati, si potrebbe fare questo:
define(['jquery', 'handlebars'], function($, Handlebars) {
// ...
var data = {"some": "data", "some_more": "data"};
var template = Handlebars.templates['my_template'];
$('#target').append(template(data));
// ...
});
tenere presente quanto segue il nel secondo frammento di codice: modulo
- I RequireJS no tira più a lungo nel modello.
- Handlebars.compile() non è più utilizzato.
In genere, dovrei avere Guard in esecuzione per mantenere i miei modelli compilati ogni volta che le modifiche a livello di sistema a livello di file si verificano nei file di modello?
Fondamentalmente la mia domanda è, è l'intenzione per gli sviluppatori di fare questo?
if (development) {
compile templates
}
else {
use precompiled templates
}
Sto anche utilizzando Rails, quindi forse c'è qualche magia nera come sass-rail.
Sì! Un collega ha menzionato il plug-in manubrio dopo aver postato questa domanda ed è perfetto! Ha persino il supporto per i18n, il che lo rende ancora più fantastico. L'ho testato e funziona come pubblicizzato. Non richiede modifiche al codice dalla modalità di sviluppo alla produzione e utilizza r.js per la build che può essere agganciata al processo di compilazione. I modelli sono incorporati nel file costruito.Tutto ciò che deve cambiare in produzione è il tag script che include require.js + data-main ... e che può essere gestito dal tuo gestore patrimoniale. –
A partire dall'ultima versione, la funzionalità i18n è stata rimossa. – magiccrafter