Devo inviare e-mail dall'applicazione MeteorJS e voglio generarli utilizzando modelli html, non da "html-in-js".
Cosa ho provato a fare:
1) Utilizzare Template.emailTemplate(data)
, ma Template
non è definito lato server.
2) Salvare i miei modelli di email come file *.html
nella directory <app>/server/email/templates
, ottenere il loro contenuto utilizzando fs.readSync()
e quindi compilarlo/renderlo utilizzando il pacchetto integrato di meteor handlebars
.
Questo funziona correttamente nell'ambiente di sviluppo, ma non riesce nella produzione utilizzando l'app in bundle a causa dei file *.html
nella directory server
non raggruppati. Inoltre, la struttura delle directory viene modificata durante il processo di raggruppamento e i percorsi relativi ai modelli diventano non validi.
3) Le vostre proposte? =)MeteorJS: generazione di e-mail dai modelli lato server
risposta
Attualmente i modelli non sono supportati lato server. Questa funzionalità sta arrivando. Nel frattempo, ho creato un pacchetto che potreste trovare utile chiamato handlebars-server che consente di utilizzare Handlebars sul server. È possibile utilizzare il pacchetto con atmosfera o copiando la directory del progetto nella cartella dei pacchetti. Ecco un esempio:
Esempio:
my-email.handlebars
Hello, {{name}}
server.js
Email.send({
html: Handlebars.templates['my-email']({ name: 'Chris' })
});
Nota
Nessun modello nel file manubri. Basta inserire le espressioni html e manubrio. Il file verrà compilato in una funzione e assegnato a una proprietà nell'oggetto Handlebars.templates. Il nome della proprietà sarà il nome del file meno l'estensione del manubrio.
Github
Un'altra opzione è ora quello di utilizzare la directory lato server 'privato' di leggere le risorse fuori e li usa per memorizzare le risorse della vostra applicazione dovrà usare.
creare il progetto meteor, quindi creare una directory/private.
Posizionare i modelli in là (si dovrebbe usare il pacchetto meteora-manubrio-server invece se avete bisogno di manubrio)
Leggi nel modello con:
Assets.getText(assetPath, [asyncCallback]);
Ovviamente si può anche fare il pattern matching regex/replace contro la stringa una volta caricata.
esempio:
var template = Assets.getText(assetPath); // Synchronous
var username = 'John Doe';
template = template.replace('{{username}}', username);
Email.send({
html: template
});
Per ulteriori informazioni sulla funzionalità beni:. Meteor Assets
Meteor 0,8 *, qui è un'altra soluzione.
- 1. jQuery modelli sul lato server
- 2. JavaFX per generazione di immagini lato server
- 3. Generazione di dati immagine HTML Canvas lato server?
- 4. meteorJS chiama un comando shell dal server
- 5. Generazione di immagini sul lato server utilizzando Java FX
- 6. Generazione di diagrammi HighStock lato server con NodeJS
- 7. Generazione documentazione dai test unitari
- 8. Generazione di più email HTML/testo codificate T-SQL
- 9. Convalida lato server Backbone.js e altri errori lato server
- 10. Play Framework generazione di modelli di runtime
- 11. MeteorJS e CoffeeScript
- 12. Generazione codice: Modelli controller personalizzati
- 13. Come funziona GZipping lato server?
- 14. Node.js: Templating sul lato client Modellazione lato server v/s
- 15. Lato server - Barra di avanzamento
- 16. ASP.NET lato server di convalida
- 17. AngularJS - lato server di rendering
- 18. Checkout lato server vs Cassa lato agente
- 19. Lato server MVC + Lato client MVC
- 20. Logica lato client O logica lato server?
- 21. Quando utilizzare lato client o lato server?
- 22. Ruby: lato client o lato server?
- 23. Utilizzo di AngularJS con MeteorJS
- 24. Recupera sempre dai modelli correlati in Bookshelf.js
- 25. Navigazione file lato server
- 26. impaginazione lato server aggiornabile
- 27. Framework javascript lato server
- 28. lato server in Meteor
- 29. HTML5 - lato server
- 30. browser lato server
Grazie! Questo è esattamente ciò di cui avevo bisogno! – th0r
È indipendente dal codice HTML? Cioè, posso usarlo anche per i modelli di testo semplice? Grazie! – hsribei