По специализации, я занимаюсь написанием серверной части сайтов (иногда приложений). Но попался проект, в котором я пишу и серверную и клиентскую часть (еще и верстку мучаю). Серверная часть организованна замечательно: полное MVC, толстые модели, несколько слоев абстракции и все покрыто тестами. А вот с клиентской частью у меня беда. С javascript я работал довольно мало и сейчас возникла проблема с организацией кода.
Почти все проекты, которые я до этого писал были с rest архитектурой и мне на сервере сильно париться не приходилось: отдал нужный объект в json-формате и доволен. А сейчас приходиться думать о представлениях. На данный момент все собирается на сервере и клиенту отдается готовый html и там скрыпты занимаются только визуальными эффектами, хотя попадаются и сложные участки.
Собственно сайт представляет из себя некий каталог. Каждый пользователь может просматривать и фильтровать список заявок, оставить отзыв к заявке. Так же у пользователей есть возможность создавать альбомы и загружать в них фотографии работ. Плюс система отзывов и сложная система распределения прав. Обилие всплывающих окон и т.п. В будущем планируется еще куча всего. Сайт частично работает на ajax (формы, загрузка фотографий), частично обычными запросами.
Пока не поздно хочу исправить архитектуру. Что бы потом не было мучительно больно. Ибо сейчас представления - это тихий ужас, а скрипты - лапша из вызовов и слушателей.
Думаю организовать это в виде одностраничного приложения на chaplinjs (люблю кофе). Подскажите, стоит ли заморачиваться с одностраничником для системы такого масштаба? Или есть другие варианты?
Собственно мне нужна модульность, AMD, клиентский шаблонизатор для представлений, IE8+, низкий порог вхождения, что бы можно было перевести существующую часть кода без особых временных затрат.
Буду очень благодарен за любые мысли. Все таки серверная и клиентская архитектуры сильно отличаются, я в замешательстве :-).
Декларативный подход, из-за чего представления получаются перегруженными. И высокий порог вхождения: половина функционала сайта - это не REST приложение и декларативные подход там не очень подходит.
К примеру менеджер асинхронной загрузки фотографий с обрезкой и т.п. Я почти неделю потратил, что бы разобраться с директивами - но так и не осилил. А делать надо быстро и что бы "вчера".
Я работал с extjs-ом полтора года. И основываясь на своем опыте могу сказать, что он абсолютно не подходит для открытого веба: слишком громоздкий и неповоротливый.
https://github.com/tamtakoe/oi.file Менеджер фотографий с обрезкой на сервере. Добавляете в метод $preview код, который должен обрезать, будет обрезка и на клиенте