чтобы делать сложные вещи просто Лично я смарти использую исключительно для простых вещей вроде цикла, условий и т.п. Переменные в шаблонах не использую. Выбор в пользу смарти производил не я. Когда я пришел в проект(ы), он уже был там. Для меня в серверном шаблонизаторе решает читабельность синтаксиса, не более. Проще читать/писать/исправлять меньше, чем больше. Если рассматривать не только серверные шаблонизаторы, но и клиентские, то шаблонизатор фреймворка ангуляр, на мой взгляд, как и сам фреймворк очень хорошо продуманы. Тут понятие "логики визуализации" преобразуется в понятие "логики поведения". Пример: <div ng-show="model.toggle">some content</div>элемент див будет скрываться или показываться, когда будет меняться значение модели. model.toggle = true; // falseдля CRUD, на мой взгляд, лучшее решение. И мне не нужно: 1. выбирать элементы по селектору 2. делать element.show() или element.hide();