Handlebars.js

Веб-разработка Пример создания нового проекта с помощью Yeoman 1.0beta и Geddy (Node.js)

Чуть менее суток назад было объявлено о выходе Yeoman 1.0beta. Новая версия принесла с собой множество изменений, включая изменившийся синтаксис для командной строки. Главным нововведением можно считать то, что авторы позиционируют новую версию не просто как набор инструментов для разработки, а уже как подобие полноценной среды для веб-разработки. Подробнее о нововведениях можно прочитать здесь.

Сегодня я расскажу о том, как с помощью Yeoman 1.0beta подготовить окружение для разработки нового веб-проекта. Для примера создадим проект, и серверная, и клиентская часть которого будут написаны на javascript. Для этого в качестве инструментов разработки выберем такой экзотичный инструмент как Geddy (Node.js MVC-фреймворк) для бекенда и Ember.js для фронтенда. В качестве шаблонизатора будем использовать Handlebars.js, так как он может работать и на серверной стороне, и на клиентской. Вся работа будет проводиться в Ubuntu 12.04 LTS.

Читать дальше →

 

JavaScript Включаем одни шаблоны Handlebars.js внутрь других шаблонов, или пишем хелпер {{include}}

Handlebars.js — это javascript-шаблонизатор, который дает отличную возможность писать простые и семантически понятные шаблоны, причем можно быть уверенным, что эти шаблоны не свалятся с ошибкой, если одна из переменных шаблона будет не определена, как, например, иногда происходит при использовании встроенного шаблонизатора из Underscore.js. Кроме того, Handlebars.js позволяет нам компилировать шаблоны заранее, не перекладывая задачу по компиляции шаблонов в браузеры пользователей.
Handlebars.js, на первый взгляд, можно назвать примитивным, поскольку он запрещает использовать сложные логические выражения в шаблонах, однако такова концепция этого шаблонизатора и его шарм — ведь шаблоны всегда останутся простыми и понятными. Всю сложную логику следует выносить в специальные функции-хелперы (helpers). Шаблонизатор содержит несколько встроенных хелперов, среди которых {{#each}}, {{#if}} и {{#unless}}, но среди них катастрофически не хватает хелпера {{include}} (наподобие {include} из Smarty), который позволил бы нам включать внутрь одних шаблонов другие шаблоны.

Читать дальше →