AngularJS

Оглядываясь назад, можно сказать, что была возможность создавать очень продвинутые веб-приложения с использованием чистого JavaScript API, но было действительно сложно поддерживать исходную кодовую базу и тестировать ее все. А затем в 2010 году AngularJS был представлен как JavaScript MVW Framework. У него было три больших преимущества, которые заставляли людей любить его:

  • Создание кода было несравненно быстрым
  • Каждая часть приложения была легко протестирована
  • Google стоял за проектом

Есть и другие вещи, которые делают Angular таким полезным для программистов. Первый - это двусторонняя привязка данных. Angular позволяет вам видеть, как данные, измененные в JavaScript, автоматически отражаются в пользовательском интерфейсе. Вначале это значительно упростило разработку, потому что больше не требовалось кодирования, кроме связывания правильного контроллера с частью HTML. Второе преимущество Angular для программистов - это директивы. Они являются отправной точкой для всех компонентов, которые мы видим сейчас в современном интерфейсе. Директивы позволили сделать код намного более пригодным для повторного использования и разделением, чем когда-либо прежде. AngularJS форсировал внедрение зависимостей, и это помогло имитировать зависимости. Его появление во фреймворке сделало Angular огромным шагом вперед в деле тестирования интерфейсных приложений.

Все эти преимущества побуждали все больше и больше компаний переписывать свои приложения с собственных решений, построенных на основе других библиотек, на AngularJS.

Угловой 2

AngularJS - отличный способ запустить приложение или MVP. С ростом популярности и появлением в ядре все большего и большего количества функций команда Angular решила переписать исходный фреймворк, представив Angular 2. Некоторые говорят, что у Angular 2 и AngularJS есть только одно: имя. Существует путь миграции (называемый ng-upgrade) с AngularJS на Angular 2. Однако Angular 2 по-прежнему является совершенно новым фреймворком, разделяющим лишь некоторые концепции своего предшественника.

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

img - архитектура ng1

Теперь концепция директив была продвинута дальше, чтобы быть ближе к стандарту веб-компонентов и способу структурирования приложения React. Все дело в компонентах в Angular 2. Это означает, что все приложение теперь является компонентом, который содержит другой набор компонентов (которые могут быть маршрутизируемыми). В итоге получается древовидная структура:

img - архитектура ng2

Целью архитектуры приложения Angular 2 является создание компонентов, которые не зависят друг от друга и как можно более слабо связаны.

Важно представить два способа создания компонентов:

  • Умные компоненты: они знают о состоянии приложения и могут связываться со службами для получения или изменения данных.
  • Глупые компоненты: у них должны быть только входы и выходы. Они готовы к размещению в любом месте системы (или даже за ее пределами) при предоставлении правильных значений на входе, и они не должны знать о существовании состояния приложения.

Представление

Наличие такого дерева компонентов имеет большое значение в производительности. Цель AngularJS заключалась не в создании наиболее эффективного фреймворка, а в том, чтобы создать самый простой для написания. Поскольку производительность становилась все более серьезной проблемой, для решения этой проблемы был представлен Angular 2. В AngularJS был цикл дайджеста, который позволял изменениям запускать обновления вверх и вниз. Angular 2, с другой стороны, имеет направленный граф компонентов, который всегда проверяется один раз (из-за одного пути обхода от корня к листьям). По словам членов основной команды Angular, эти изменения заставили приложения Angular 2 работать в 3–10 раз быстрее, чем те же приложения, созданные с помощью последней версии AngularJS.

Экосистема

Первоначально опубликовано на www.laravelfeed.com.