Carduelis
@Carduelis
Web-developer, front-end, js, less

Как ловить ошибки в шаблонах underscore/lodash?

DISCLAIMER. Советы из разряда, "вам нужен Angular.js" или "вы все делаете неверно, нужно переписать по-нормальному", пожалуйста публиковать не нужно. Проект слишком массивный, чтобы его менять в одночасье.

Используем в проекте lodash.js-шаблоны. Рендерим шаблоны из данных, присланных сервером. Есть проблема дебага, которая постоянно возникает. Иногда бывает, что сервер (иногда не наш и доступа к нему мы не имеем) возвращает не всегда все необходимые ключи. Ну или просто, что-то где-то отваливается, и lodash дает Reference Error, а дальше весь js не работает.
Как лучше ловить эти ошибки? В основном используем одну функцию, где собирается шаблон с помощью _.template()().
Полагаю, можно использовать catch try, как лучше это поставить, чтобы решить две проблемы:
  1. Четко видеть какой ключ не передался
  2. Чтобы работа js не прекращалась

Буду благодарен за примеры кода, спасибо.
  • Вопрос задан
  • 263 просмотра
Решения вопроса 1
kirill89
@kirill89
Мне кажется вы всё делаете правильно. Вам нужно разделить компиляцию шаблонов и их выполнение, а затем обернуть выполнение в try catch.

let tpl = _.template('<%-data%>');
let html;

try {
html = tpl(params);
} catch (e) { logError(e); }


В таком случае, если не передали необходимых ключей, ошибка будет вполне вменяема:

ReferenceError: data is not defined
    at eval (lodash.templateSources[1]:9:5


Кстати компиляция шаблона довольно ресурсоемкая операция, лучше всего делать её один раз - при первом использовании шаблона или подгрузке.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
fornit1917
@fornit1917
Полученные данные валидировать лучше до того, как передаете их в шаблонизатор
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы