Автор: Даниэль Баах

Новая эра современных фреймворков JavaScript штурмом захватила Интернет, и разработчики SpatialDev это замечают.

Всего два года назад наши разработчики собрались вместе и решили, что AngularJS будет нашим предпочтительным фреймворком JavaScript. В то время многие в сообществе открытого исходного кода видели в AngularJS веб-фреймворк будущего. В SpatialDev мы были большими поклонниками контроллеров AngularJS, двусторонней привязки данных и встроенной поддержки удаленного взаимодействия с HTTP-сервером.

Перенесемся через два года и множество приложений спустя, мы смогли провести аналогичную встречу в стиле пост-мортем о ловушках AngularJS, новейших средах Javascript и прогрессивных веб-приложениях.

Вот несколько замечаний по AngularJS:
• Несмотря на огромную поддержку со стороны сообщества открытого исходного кода, официальная документация, а также ошибки во время выполнения содержали разочаровывающий уровень двусмысленности
• Нет официального шаблона для маршрутизатора и управление состоянием
• Плохая ng-repeat производительность при работе с большими коллекциями
• Отсутствие официальных инструментов формирования шаблонов проекта.

Мы решили, что пора двигаться дальше. Больше всего выделялись два фреймворка: новый Angular (v2+) и Vue.js.

Vue.js

Vue.js, созданный Эваном Ю, представляет собой невероятно быструю, простую в настройке прогрессивную структуру пользовательского интерфейса с универсальностью для создания приложений любого масштаба. В сочетании с основными плагинами Vuex и Vue Router, Vue.js имеет множество инструментов для поддержки современных одностраничных приложений. Посетите vue-awesome для тщательного изучения ресурсов Vue.js, инструментов разработки, утилит, компонентов пользовательского интерфейса и многого другого.

Угловой (v2+)

Angular — это платформа, созданная для предоставления комплексных инструментов для улучшения опыта веб-разработчика. Этот новый всеобъемлющий фреймворк был построен с помощью Typescript, надмножества Javascript, созданного Microsoft. Google, создатель Angular, проделал великолепную работу по созданию современного инструментария, созданного для поддержки всех этапов жизненного цикла веб-разработки.

Некоторые дополнительные инструменты разработки:
Angular CLI — вспомогательный инструмент для запуска вашего проекта с нуля. Упрощает выполнение комплексных и модульных тестов
Augury — расширение для Chrome, помогающее отлаживать и профилировать компоненты
Mobile Toolkit — набор инструментов и основ для разработки прогрессивных мобильных веб-приложений с помощью сервис-воркеров. для автономного использования
Реактивные расширения для Javascript (RxJS) — веб-приложения больше не статичны. Reactive Extensions for Javascript (RxJS) — это новая управляемая событиями парадигма, созданная для поддержки сложных асинхронных приложений с интенсивным использованием данных. С объектом Observable RxJS вы можете подписаться на несколько асинхронных потоков данных и получать уведомления всякий раз, когда происходит событие.

NgRx

NgRx — это набор библиотек на основе RxJS, созданный для управления состоянием в приложениях Angular. Эта система, вдохновленная Redux, имеет несколько основных принципов:

• Состояние приложения является единственным источником достоверной информации и хранится в дереве объектов
• Объект состояния неизменяем. Компоненты и службы никогда напрямую не изменяют состояние приложения; вместо этого единственный способ изменить состояние — создать действие, объект, описывающий, что произошло (http://redux.js.org/docs/introduction/ThreePrinciples.html#state-is-read-only
• Эти указанные действия передаются чистым функциям, называемым редюсерами, которые принимают предыдущее состояние и следующее действие для вычисления нового состояния.
• Доступ к состоянию приложения осуществляется через Store, наблюдаемый объект состояния приложения. и его действия

Как упоминалось ранее, управление состоянием в больших приложениях является ключевым. NgRx делает управление состоянием плавным и прямым. Мы считаем, что вместе эти фреймворки и библиотеки составляют идеальный набор инструментов, необходимых для создания веб-приложений будущего.

Мы уже пытались использовать Vue, Angular, RxJS и NgRx в некоторых очень интересных проектах. Оставайтесь с нами, чтобы узнать больше об этих проектах, а также о новых захватывающих технологиях и процессах, которые каждый день используются здесь, в SpatialDev.