Почему AngularJS плохо подходит для приложений с графическим интерфейсом?

При оценке AngularJS для проекта я заметил следующий абзац в его документацию:

Игры и графические редакторы - примеры очень интенсивных и сложных DOM манипуляция. Эти приложения отличаются от приложений CRUD и результат не подходит для Angular. В этих случаях использование что-то ближе к голым металлам, например, jQuery, может быть лучше.

Но документы продолжаются, не объясняя, почему это так. Чтобы принять обоснованное решение о том, какую технологию мы используем для нашего проекта, я хотел бы лучше понять, откуда взялось это утверждение и какие факты стоят за ним.

Какие конкретные проблемы могут помешать тому, кто пытается создать, например, инструмент иллюстрации или набор для редактирования видео в AngularJS?

Ответ 1

Это хороший вопрос. Angular предоставляет отличные декларативные возможности для вашей работы на веб-странице. Для этого он полагается на наблюдателей и постоянно проверяет изменения наблюдаемых свойств, а затем обновляет пользовательский интерфейс с изменениями. Часто задаваемые вопросы требуют, чтобы этот процесс был "быстрым" с сотнями или тысячами привязок, который достаточно хорош для большинства применений. Редакторы игр и графического интерфейса могут иметь сложные интерфейсы с частым или постоянным взаимодействием с пользователем, поэтому постоянная переоценка огромной коллекции наблюдателей может быть не самым сознательным способом выполнения действий. Сравните это с сайтом, таким как Stack Overflow, где пользователь только нажимает/нажимает что-то каждые несколько секунд и вызывает повторное отображение списка часов. Использование более императивного подхода и библиотеки (jQuery и др.) Приведет к меньшему накладному расходам.

Ответ 2

Angular имеет несколько ограничений, которые здесь вступают в игру.

Во-первых, ng-view не поддерживает вложенные представления. Таким образом, это ограничивает более сложный дизайн пользовательского интерфейса.

Далее "Редактор графического интерфейса" обычно строится вокруг концепции виджетов и диалогов. Angular построена вокруг совершенно разных концепций. Вы можете несколько имитировать виджеты с директивами. Но это будет ощущение, что вы сражаетесь Angular все время.

В основном вложенные области, изолировать области и декларативные привязки данных не являются общепринятыми парадигмами для сложной работы графического интерфейса.