@dGololobov
начинающий

Как сделать html-шаблон для использования в js?

Пишу на nodejs небольшой сервис для отправки писем с помощью nodemailer.
Хочу использовать щаблоны для писем.
Например в БД будет лежать подобный шаблон:
<h3>Привет! %username%</h3>
<p>Спасибо за заявку. Твой заказ %orderId% принят в работу.</p>
<p>Жди новостей в течении дня!</p>


И затем я хочу использовать его при отправке письма из бэка:
const template = getTemplate(tplName)
let info = await transporter.sendMail({
                from: '"SenderName" <email@sender.ru>', 
                to: req.body.email, 
                subject: "Subject Title",
                html: template // html template
            })


Как такое реализовать?
  • Вопрос задан
  • 251 просмотр
Решения вопроса 1
@dGololobov Автор вопроса
начинающий
Решил использовать hogan.js
В админке в textarea создаем шаблон вида: <p>Привет {{username}}</p> И отправляем его в БД (у меня mysql)

В бэкенде забираем шаблон из базы, присваиваем его переменной и обрабатываем (использую express поэтому пример с ним):
const hogan = require('hogan.js')
app.post('/mailer/:template', (req, res) => {
    // тут мы получили шаблон из БД
   const tpl = mysql.get(`select * from tpls where name='${req.params.template}'`
   let template = hogan.compile(tpl)
   let output = template.render(req.body) //Передаем в щаблон объект с данными
   console.log('out:', output) // out: <p>Привет Василий</p>
})
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
hzzzzl
@hzzzzl
ммм ну например

function makeText(obj) {
  return `<h3>Привет! ${obj.name}</h3>
<p>Спасибо за заявку. Твой заказ ${obj.id} принят в работу.</p>
<p>Жди новостей в течении дня!</p>`
}

.... html: makeText({
  name: 'Ivan',
  id: 666
})
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы