Через 2-3 года ангуляр, реакт и вуе будут, тряся песком, пыжиться: «мы тоже вебкомпоненты! Оберни нас в customElements.define() и даже не узнаешь, что внутри shadowDOM скрывается virtualDOM!»
Не знаю как второй и последующие версии, а основная фича оригинального была именно в MVC и двухстороннем биндинге, что в итоге позволяет практически полностью отказаться от прямого ручного манипулирования DOM. Вообще, хорошо это или плохо, но разработчики, похоже, хотели сделать именно фреймворк, и в итоге в ангуляре есть практически всё, чтобы делать приложение только на нём, расширяя его модулями, при необходимости, и особо не используя никаких других библиотек.
Я, собственно, задал вопросик по тому, что мне не кажется, что там нормальный MVC.
Я писал проект средних размеров с первым ангуляром, мне показалось, что там из MVC только «V» и «С». Моделей ведь там нет в нормальном виде, только то, что приходит по REST-API.
Хз, может я не прав, конечно, или просто не умею готовить ангуляр. Сейчас React использую, он мне кажется куда более простым, понятным и логичным, чем сабж.
А, в этом плане. Возможно, как раз этот bidirectional binding и вносит путаницу, оставляю контроллеру лишь функцию бизнес логики без прямого связывания пользовательского ввода с моделью, как это происходит в обычном MVC. Фактически, наверное, можно считать всё содержимое $scope моделью. А уж «бэкенд», откуда читается эта модель и куда персистится, будь то REST-API или ещё что-то, другой вопрос. По-хорошему за это должны отвечать фабрики и сервисы, оставляя контроллеру лишь реализацию логики.
По поводу react - тоже хотел как-то перейти на него, но в итоге пришёл к выводу что это лишь библиотека для уровня представления. То есть многое из того, что есть в том же ангуляре (в котором view это лишь его часть), там надо реализовывать вручную. Да и отвыкнув от прямого манипулирования DOM-ом уже не хочется к этому возвращаться.
На счет React'a - в общем то, я с тобой согласен, что это лишь либа (по этому только реакт ни кто и не юзает), но один момент не понял - что ты имеешь ввиду под прямым манипулированием DOM'ом?
Что в ангуляре, что в реакте, везде приходится работать со всеми этими дивами, не вижу особой разницы.
П.С. Возможно, я не очень внятно сформулировал мысли...
Я имел в виду, что если, например, открыть первый же hello world по react, там третья строка это поиск в DOM-дереве document.getElementById. Тогда как имея локальный контекст в виде $scope в ангуляре делать там подобное практически не приходится никогда. Не всегда, конечно, охота завязываться на такой довольно большой фреймворк, в последнем проекте после долгих споров вообще отказались и от ангуляра и от реакта.
Когда с backend'а прилетают только данные (скажем, в формате JSON), то тебе нужно строить всю логику отображения на клиенте.
И тут у тебя выбор. 1. Ты пишешь HTML, скрываешь элементы (например, через CSS), затем проверяешь данные от бэка и с помощью JS показываешь нужные тебе элементы страницы. 2.Ты просто используешь какой-нибудь JS-фреймворк, который предоставляет тебе наружу всякие рычаги. Дёргаешь за них и получаешь результат.
В простых случаях подойдёт первый вариант. На проектах посложнее удобнее использовать фреймворки, чем городить простыню JS и частично переизобретать уже изобретённое.
Немного нетак. У меня rest и модель данных в базе отличаются от модели в ангуляре, например. Может, это пдохо, но в базе модель хранения данных, а в браузере - модель юзера-чайника (и костылей к нечеловечности жс).
Я писал проект средних размеров с первым ангуляром, мне показалось, что там из MVC только «V» и «С». Моделей ведь там нет в нормальном виде, только то, что приходит по REST-API.