Volevo solo un approccio leggermente diverso. Ho provato pochi altri altri modi e qui ci sono alcune cose che non mi piace di loro:
- Modifica angolare di default
{{obj.property}}
parentesi a qualcos'altro è una cattiva idea. Soprattutto quando si inizia a utilizzare componenti di terze parti che non sono a conoscenza della configurazione angolare non standard, i collegamenti in tali componenti di terze parti cesseranno di funzionare. Vale anche la pena ricordare che il team di AngularJS non sembra voler seguire il percorso di consentire più notazioni di binding, controllare this issue
- Mi piacciono molto i modelli di baffi e non voglio passare l'intero progetto a qualcos'altro a causa di questo piccolo problema .
- Molte persone consigliano di non mescolare il rendering lato client e lato server. Non sono completamente d'accordo, credo che se stai costruendo un sito web multipagina con poche pagine angolari e altre che sono statiche (qualcosa di simile a noi o alle pagine dei Termini e Condizioni), è perfettamente corretto usare i modelli di lato server per creare mantenere quelle pagine più facili.Ma detto questo, per le parti che sono angolari non si dovrebbe mescolare il rendering lato server.
Ok senza la mia risposta: Se si utilizza NodeJS ed esprimere si dovrebbe essere la seguente:
Sostituire attacchi {{}}
nella vostra parte angolare con qualcosa come {[{}]}
(o qualcosa di completamente unico)
Ora in voi percorso aggiungere un callback per il rendering metodo:
app.get('/', function(req, res){
res.render('home', {
title: 'Awesome Website',
description: 'Uber Awesome Website'
}, function(err, html){
var htmlWithReplacedLeftBracket = html.replace(/{\[{/g, '{{');
var finalHtml = htmlWithReplacedLeftBracket.replace(/}\]}/g, '}}');
res.send(finalHtml);
});
});
Questo dovrebbe consentire di utilizzare baffi togethe r con AngularJS. Un miglioramento che potresti fare è estrarre quel metodo in un modulo separato per riutilizzarlo su tutti i percorsi.
C'è un buon motivo per cui stai facendo questo? Sembra un po 'complicato! Forse puoi ottenerlo in un altro modo? –
Sto creando un generatore di build/scaffold CLI per un framework javascript, quindi mi piacerebbe che i template facessero parte di questo ... –
Hai guardato il [grunt init] (https://github.com/gruntjs/grunt-init) sistema di template che aiuta a creare template come questo? . [Yeoman] (http://yeoman.io) sta anche facendo qualcosa di simile. Spero che ci vorrà un po 'di fatica a costruire un generatore come questo. Per quanto riguarda i manubri, non sembra che ci sia un modo per modificare i delimitatori, ma esiste un'opzione di escape incorporata in base a questo problema https://github.com/wycats/handlebars.js/issues/146. Molti altri sistemi (baffi, caratteri di sottolineatura, ecc.) Consentono di modificare i delimitatori. –