Что использовать в качестве продвинутого шаблонизатора JavaScript?
На данный момент у меня проекты с большим количеством клиент-сайд кода на javascript. Я не использую фреймворки, потому что в определенный момент требования архитектуры начинают входить в конфликт с возможностями фреймворков и приходится воевать. Сейчас архитектура построена на классах TypeScript. Однако вопрос не в этом.
На данный момент в качестве шаблонизатора я использую handlebars. Но handlebars сам по себе глупый, и продумывание рендеринга шаблонов занимает много сил. У меня с ним две проблемы:
1) Если надо изменить только часть шаблона, то, чтобы не перерендеривать всё, приходится разбивать шаблоны на части и управлять изменением нужной части вручную.
2) JS для активного интерфейса (табы, выпадающие меню, слайдеры и прочее) непонятно как нормально хранить, он плохо вписывается в общую архитектуру приложения.
Есть ли какой-то вариант работы с шаблонами, который полностью или частично лечит эту проблему, но при этом не требует переработки всей архитектуры приложения под требования какого-нибудь фреймворка?
React.js позиционируется как продвинутый шаблонизатор с возможностью разбивать проект на компоненты. Разработчики уверяют, да и по своему опыту знаю, что его интеграция с существующим проектом легка и требует минимум усилий. А если ещё и Flux "прикрутить", то React раскроет себя в наилучшем виде.
desuvin: Полностью согласен, React действительно многословен. Даже модный двусторонний binding, экономящий время программиста, "из коробки" отсутствует, нужно компоненте писать свой метод.
Однако React избавлен от таких, на мой взгляд лишних, вещей как магические константы и зоопарк сущностей, а это значительно понижает порог вхождения. Шаблон в React-е подготавливается на знакомом всем JS, используя стандартные для этого языка паттерны. JSX же в данном случае не зло, а "сахар".
На фоне второго Angular-а, значительно прибавившего в скорости, единственным преимуществом React-а становится лишь понятный код.