AngularJS — популярный и, следовательно, важный JavaScript-фреймворк, но информации о том, как он работает в реальном мире, не так много. Некоторые исследования, основанные на опросе, дают нам некоторые подсказки.
Бразильские компьютерные ученые Мигель Рамос, Марко Тулио Валенте и Рикардо Терра провели опрос, чтобы выяснить, что практикующие программисты AngularJS (примечание: не Angular) считают основными проблемами производительности фреймворка. Бенчмарк, он предоставляет некоторые интересные индикаторы того, в чем заключаются проблемы, но такой информации мало:
Опрос состоит из 31 вопроса, разделенных на четыре части:
(1. История,
(2) практики и восприятия относительно производительность в AngularJS,
(3) общие причины проблем с производительностью AngularJS,
а также
(4) технические причины этих проблем.
Опрос продвигался в ряде сообществ и форумов AngularJS и получил 95 ответов, так что это следует рассматривать как небольшую, но хорошо ориентированную выборку. Более 70% заявили, что опыт работы не менее 2 лет.
Хотя речь идет только об AngularJS, многие ответы подходят и для других фреймворков. Например, 45% исследовали исходный код с целью повышения производительности, но только 8% признались, что действительно вносили изменения. Было принято решение либо купить сторонний компонент 30%, либо создать собственный 27%.
На вопрос, каковы причины проблем с производительностью, результаты оказались неожиданными:
Что удивительно, так это то, что как мало респондентов винят архитектуру AngularJS по сравнению с обвинением в собственной неопытности и что многие считают использование JavaScript проблемой — конечно, если вы выберете AngularJS, вы сначала хорошо знаете JavaScript?
Основные результаты обсуждаются в документе, но следующий рисунок, взятый из статьи, дает обзор:
Вершина списка проблем — ненужная двусторонняя привязка. Помните, что речь идет о проблемах с производительностью, и это говорит о том, что автоматическая синхронизация данных в представлении и модели упрощает чрезмерное использование.
Хотя эти результаты относятся к AngularJS, исследователи могут сказать несколько слов об Angular 2.0:
«Наиболее важной архитектурной модификацией в Angular 2.0 является новый механизм обнаружения изменений, который использует неизменяемые и наблюдаемые структуры данных для обнаружения изменений, внесенных в модель. В частности, неизменяемые объекты сокращают количество проверок при сравнении сложных и вложенных структур данных на предмет равенства. Наблюдаемые объекты также способствуют повышению производительности, предоставляя определенные события, на которые могут подписаться другие объекты, чтобы обнаруживать изменения ».
Конечно, он также переключается с JavaScript на TypeScript, и я предполагаю, что проблемы с незнанием языка, вероятно, будут еще больше. Исследователи планируют расширить свою работу до Angular 2.0, и когда они действительно будут ждать новостей об этом.