В общем, хочется написать что-то свое,но уперся в вопрос того на чем писать фронт и как его реализовывать.
Сам я бэкендер, во фронт не так часто вылезаю. Поэтому и спрашиваю(+ опыта всего год).
Как я это вижу:
а) есть некий шаблон, или группа шаблонов. В шаблоне, есть динамическая часть и статическая.
Динамическую хочу получать ajax - запросом на rest, который будет балансироваться nginx. (Собственно все что будет, будет стетлесс).
Статическую получать с nginx из кэша. И вот как грамотно сделать статику я не знаю.
По идеи, это html шаблон + стили + js (как база для всех страниц, ибо многие почти однообразны), и некий фаил который описывает что внутри страницы(ну вроде текста,уникального для каждой страницы, при том что остальное все одинаково) - который уникален ,для каждого адреса.
Правильный ли ход рассуждений? и что лучше всего подходит для решения этой задачи?
Проще всего использовать jquery + ajax + requireJs. Посложнее Backbone, еще сложнее AngularJs, еще сложнее Extjs.
Хотите монстра? Python Tornado + XSLT + Любой MVC clientside фреймворк на ваше усмотрение. Получится что есть сервис приложений Java (Справочники). Питоном набираете данные, пишите интеграционную логику, рендерите XSLT и инициализируете SPA отдельными элементами. Зависимостями можно управлять от набора данных на входе в XSLT и DI на клиенте с асинхронной подгрузкой. (Часть архитектуры hh.ru).
Почему я так написал? С точки зрения чему быстрее научить нового сотрудника. Так как использовал и то и другое, но Angular поменьше, даже исходя из количества строк исходников (jquery - до 3к, angular - 10-15k, backbone + marionette = 3k, Extjs =70k). Так понятнее?
larionov_n: Нет, не понятно. Кол-во строк роли не играет. В Symfony их во много раз больше, но изучению дается легко.
Всеми этими технологиями пользоваться умею (ну разве что backbone не понравился, забросил) и мануалы уже не нужны. И если вы не заметили, я указал что у них разные цели, поэтому и сравнивать не чего.
AngularJS дался мне за 2 недели в полной мере.
Клиентская часть на AngularJS, Jquery - для управления dom и для restful. А более в фронте и не требуется. backend же реализуется на чем удобнее. В моем случае это я Symfony2 и с недавних пор node + *****
Backbone вам не понравился видимо потому что коробочных решений мало. Просто кусок базовых классов для творчества. AngularJS - расширение для HTML которое вводит DataBinding и внутренний скоуп в котором и химичите. Extjs - с ним вы вроде не спорили. А я высказался исходя из объективных оценок на разных источниках инета, исходя из данных порога вхождения в отдельную технологию. Если выбрать фреймворк - это уже архитектура, то я так понимаю сложных корпоративных приложений вы не писали. И нам неизвестны критерии того что хочет автор, просто сделать CRUD операции - будет наверное одинаково легко на любом фреймворке. Построить приложение уровня хорошего desktop IDE на клиенте - это уже другой разговор. Но к сожалению я не сталкивался с ограничениями AngularJS в построении серьезных приложений, но уверен, его популярность связана с простотой применения в контексте простеньких админок. Да и видел аналоги Photoshop на ангуляре и редакторы WebGL 3D моделей. Так-же удивился что и поверх WebGl & Canvas его используют для UI игр. Но мне это ничего не говорит, я понимаю, что объективные данные о том что в Backbone порог вхождения меньше чем в Angular - ерунда, большое приложение на Backbone Junior напишет, так что его надо будет переписывать. А на Angular философия уже построенная архитектура коробочных решений уже может его спасет от критики и невозможности сопровождения. Что касается Ember, Knockout - они все поближе к Backbone.
А Symphony - это вообще огород Backend, тогда посмотрите на другого монстра - Java Spring Framework или Playframework (Scala), NET C# - будет просто в сотни раз больше объема исходников. Можно еще обсудить сколько весит строк ядро линукса :)
Считаю, что если вы не согласны с моим выводом о том что проще или сложнее, можете просто пропустить мой ответ. А кто обратит внимание и захочет сам удостовериться погуглит и найдет нужные ему тезисы в зависимости от поставленной задачи.
По поводу jQuery - его цель DOM дерево, остальное внутри кроме sizzle, приправка к обертке $. Строить с его помощью MVC не получится никак, получится лапша код. AngularJS - это уже набор базовых классов и целый API для разделения данных от представлений не так ли? Надо зайти на сайт и покурить маны, понять. А jquery - две строчки почитать в описании апи Ajax, append. Что проще написать? Один вызов Ajax с jquery и срендерить шаблон в div или определить контроллер модель, сервис для работы с Backend? Вроде как первое попроще, но Backbone с таким же способом рендеринга и применения будет опять-же проще чем AngularJS. А модульный Backbone + Marionette RIA с транслятором (TypeScript, Coffe, etc), requireJS, browserify, grunt, bower и кучей библиотек будет куда сложнее чем коробчное решение с Angular. Но Ангуляр так-же прошивается кучей примочек как и бэкбон. Так что тут спорить нет смысла, кому что проще пусть и выбирает. Keep it stupid and simple.