the-component-approach-and-typescript-in-angularjs-2-0-for-large-teams-developing-complex-apps

Разработанный в 2009 году, AngularJS изначально задумывался как проприетарный инструмент для создания корпоративных приложений. Однако авторы практически сразу отказались от проприетарности, выпустив AngularJS 1.x, библиотеку с открытым кодом. С тех пор фреймворк активно развивался, но на определенном этапе обновлений технологии стало недостаточно, чтобы обеспечивать потребности крупномасштабных веб-проектов. Назрела необходимость фундаментальных перемен в «устройстве» технологии, результатом чего и стал релиз AngularJS 2.0.

the-component-approach_ru

Я убежден, что самая крутая фишка разрабатывать различные компоненты приложения независимо друг от друга.

AngularJS 1.x шел по другому пути. Многообразие синтаксиса и способов написания и связывания директив вело к отсутствию единого стиля при создании кода, что порождало новые ошибки и усложняло разбор чужого кода. Таким образом о паралелльной разработке компонентов одного приложения даже речи быть не могло.

Компонентный же подход AngularJS 2.0 позволяет работать над частями решения паралелльно, в т.ч. и разными командами. В силу специфики философии и архитектуры AngularJS2.0 как нельзя лучше подходит для х команд, работающих над сложными приложениями.

Упростив синтаксис и передачу данных между отдельными частями приложения, обеспечив независимость компонентов, создатели AngularJS 2.0 облегчили создание каркаса приложения и написание кода. В итоге разработчик получает простые инструменты, с помощью которых он может делать сложные фичи. Если AngularJS 1.x требовал от разработчиков высокого уровня входных знаний (например, директивы имели множество избыточных настроек, которые редко использовались, а то и вовсе вызывали недоумение), то с AngularJS 2.0 порог входа ниже, приложения писать гораздо проще. К слову, всю документацию по AngularJS2.0 можно уместить на нескольких страницах, и дело отнюдь не в лени авторов: AngularJS2.0 настолько прост и понятен, что не требует многотомных мануалов.

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

typescript_ru

Любите вы TypeScript или нет – дело вкуса. Однако факт остается фактом: TypeScript, надстройка JavaScript, быстро эволюционирует, и постепенно часть его функциональности входит в стандарты самого JavaScript.

Скорость развития и обратная совместимость с JavaScript послужили причиной выбора TypeScript для работы над AngularJS 2.0. С TypeScript, даже без комментариев, код AngularJS 2.0 более понятен, читабелен и документирован. TypeScript добавляет синтаксический сахар в стиле ООП, что оценят back-end разработчики. Таким образом, круг людей, способных относительно быстро переключиться на AngularJS 2.0, увеличивается.

comparison-with-reactjs_ru

AngularJS 2.0 – фреймворк, а ReactJS – библиотека, но по сути различия между ними сводятся к минимуму. Например, они оба поддерживают компонентный подход. Но будучи фреймворком, AngularJS 2.0, в отличие от ReactJS, фактически диктует каким образом приложение будет выглядеть. С другой стороны, в документации по AngularJS 2.0 очень подробно расписаны все стадии разработки.

Когда технологии примерно равны, как в случае с AngularJS 2.0 и ReactJS, не последнее значение имеет комьюнити, стоящее за каждой из них. Комьюнити AngularJS в этом сравнении пока выигрывает – свой вклад в развитие AngularJS 1.x внесли более миллиона человек, большинство из которых рано или поздно переключатся на AngularJS 2.0. Что в свою очередь гарантирует доступ к обширному набору плагинов и уверенность в том, что, задав интересующий вопрос, ты получишь исчерпывающий ответ.

migrating-from-version-1-to-2_ru

Если приложение написано на одной из последних версий AngularJS 1.x и написано не абы как, то миграция на AngularJS 2.0 скорей всего будет быстрой и безболезненной. Изменения, которые потребуется внести, касаются скорее синтаксиса, чем семантики, требующей переделывания всего кода. Произвести миграцию небольших приложений будет просто, если при их разработке вы следовали Руководству по стилю для Angular приложений (Angular Style Guide). С миграцией больших приложений придется повозиться.

Создатели AngularJS 2.0 постарались облегчить нам жизнь в процессе миграции – в самом фреймворке есть модульное обновление (очень неплохо задокументированное, кстати). Есть также возможность инкрементной миграции. Основная сложность обновления до AngularJS 2.0 заключается в связывании (coupling) компонентов проекта и частоте использования тех самых избыточных способов и директив AngularJS 1.x, не имеющих аналогов в AngularJS 2.0.

Стоит ли бросать все и срочно мигрировать ваше приложение с AngularJS 1.x на AngularJS 2.0? Вопрос целесообразности. Естественная тяга ко всему новому, присущая каждому хорошему программисту – а я исхожу из того, что ваша команда именно из таких и состоит – может привести к ситуации, когда обновление происходит ради самого обновления, когда в миграции вроде бы и не было нужды. Чтобы этого избежать, ответьте на следующие вопросы:

  • Как долго еще вы планируете развивать свое приложение?
  • Планируется ли внесение серьезных изменений?
  • Будет ли усложняться поддержка приложения?
  • Насколько сильно будет меняться состав команды за всё время существования проекта?

Когда вы посмотрите на приложение в перспективе нескольких лет, станет ясно – проще и дешевле сделать миграцию вовремя, чем тратить время и силы поддержку устаревшей технологии. Или искать людей, расзбирающихся в AngularJS 1.x. А, как я уже говорил, уровень входных знаний для AngularJS 1.x гораздо выше аналогичных требований к AngularJS 2.0.

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