- PVSM.RU - https://www.pvsm.ru -
8-9-го декабря 2016 года была проведена первая конференция [1]по Angular в Бельгии. Игор Минар [2] (ведущий разработчик Angular) выступил в качестве основного докладчика с несколькими интересными объявлениями относительно того, по какому графику будет выпускаться Angular. И представьте себе, в марте 2017 года нас ждет релиз Angular 4 [3]. При этом, на данный момент уже опубликована бета-версия [4].
Всем привет, с вами Максим Иванов [5] и Дмитрий Сергиенков [6], и сегодня мы выясним куда делась третья версия, и почему мы по-прежнему можем быть верны Angular. Сейчас начинающему фронтенд-разработчику, изучающему JavaScript, довольно трудно определиться: какой же фреймворк или библиотеку им взять и изучить, оставаясь в тренде? Конечно, без слова React, сейчас не обходится ни один разговор на тему фронтенда, однако, в свое время я начал с первой версии Angular, начитался много руководств по написанию фронтенда на ES6 [7] (с классами и прочим добром) и до сих пор не жалею. Да, вы можете писать корпоративные приложения с использованием только jQuery, но по мере развития и сложности проекта вы начнете закапывать себя в спагетти-коде, смешивая логику и представление, MV*-фреймворки же этого сделать вам не дадут.
Еще в сентябре, когда вышла вторая версия, Angular Team [33] объявила о том, что она будет поддерживать семантическое версионирование (SEMVER [34]).
Как видно из названия, семантическое версионирование — это добавление смысла каждому номеру версии. Семантика номера версии позволяет разработчику определить, что за модернизация была проведена в данной версии продукта, к тому же, мы можем настроить наши инструменты, например, менеджер пакетов NPM, таким образом, чтобы при сборке приложения выбиралась конкретная версия зависимых библиотек [35], чтобы при этом мы ничего не сломали.
Семантика версии состоит из трех чисел:
Всякий раз, когда Вы исправляете ошибку в коде (баг) и выпускаете продукт заново, Вы увеличиваете последнюю цифру; если же просто была добавлена новая функция в вашем продукте, вы увеличиваете вторую цифру, но когда Вы выпускаете продукт с кардинальными (критическими) изменениями, которые ломают работу вашего старого кода, Вы увеличиваете первую цифру.
Критические изменения появляются тогда, когда Вам, как разработчику, который использует данную библиотеку, придется вмешаться в свой код и изменить его после обновления и перехода на новую версию.
Что это может означать для Angular Team? Понятно, что для любого бурно развивающегося программного обеспечения наступает момент, когда приходится проводить критические изменения. И поэтому, по объективным соображениям, Angular Team сменила версию 1.x на 2.x, из-за того, что те изменения, которые были выполнены, сломали работу основного кода.
Сообщество Angular точно поймет, о чем идет речь. Пользователям, чтобы перейти на вторую версию, пришлось переписать весь код. Хотя многие и полюбили Angular 1.x, но по объективным причинам были сделаны общие критические изменения, был написан новый API, новые шаблоны. Это было очевидно, и в конечном счете, Angular 2 был полностью переписан (хотя и существует способ менее болезненно мигрировать на новую версию [36]).
Сейчас решено, что переход от версии 2 до версии 4, 5,… не должен быть таким болезненным, как это было с первой версией. Теперь код не будет полностью переписываться, наши изменения будут затрагивать только отдельные библиотеки, поставляемые сейчас с Angular 2, в свою очередь они будут соблюдены согласно SEMVER. Кроме того, постепенно мы будем включать Deprecation фазы (предупреждения консоли разработчика о том, что в следующих версиях данный функционал поддерживаться не будет), чтобы позволить разработчикам своевременно перейти на новый функционал.
Angular Team использует собственный инструмент контроля изменений и обработки автоматических обновлений. Команда упорно работает над ним, и запланировала выпуск совместно с выходом Angular 5 в 2017 году.
Как вы, возможно, уже догадались, термин «Angular 2» будет устаревшим с выходом 4-ой или 5-ой версии. Тем не менее, теперь следует начать называть его просто «Angular» без версии. Кроме того, вы должны начать избегать библиотек с GitHub/NPM с префиксом ng2- или angular2-. Существует единый ресурс с документацией — angular.io [37] c официальным сообществом [33] на GitHub.
С этого момента, старайтесь избегать использования номера версии, если он не является действительно необходимым для устранения неоднозначности.
Три простых руководящих принципа:
Вся документация, даже для Angular 1.x, будут приведены в соответствие с этими правилами в ближайшие недели. Но если вы пишите что-то в своем блоге, пишите статьи, курсы, книги или всякий раз, старайтесь ориентироваться на специфическую версию Angular, дописывайте версию в заголовках публикации, якобы в данной статье используется Angular 2.3.1. Это помогает избежать путаницы для ваших читателей, особенно, когда вы пишете о конкретных API.
Библиотеки ядра Angular находятся в одном репозитории на GitHub [38]. Все они имеют свою версию и распространяются как различные пакеты NPM:
Из-за несовпадения в версиях маршрутизатор пакетов стал сразу искать Angular 4 [39]. Поэтому мы решили, что семантическое версионирование должно быть строгим для основных пакетов ядра, которые гораздо легче поддерживать, а версия Angular именоваться, исходя из последней версии зависимостей.
Кроме того, важно понимать, что Angular используется в Google. Большинство приложений Google используют Angular из основной ветки репозитория на GitHub. Всякий раз, когда происходит обновление в ветке master, все сразу же интегрируется в основной внутренний репозиторий Google (в компании используется один монолитный репозиторий), где располагаются такие продукты как Google Maps, Adsense и другие. В результате все проекты, использующие Angular падают, если они имеют критические изменения, поэтому приходится все переписывать, что, в свою очередь, неудобно. Таким образом, лучше всего иметь полностью унифицированную версию, которую было бы легче поддерживать в течение долгого времени, что помогло бы команде быть более продуктивной в выпуске новых функций.
Тот факт, что критические изменения все же будут, не означает, что они появятся сразу же через неделю. Angular Team уверяет в том, что в дальнейшем у вас останется обратная совместимость между версиями, теперь изменения будут иметь четкий характер и идти по конкретному графику в течение трех циклов:
Следующие 3 месяца будут посвящены доработке Angulr 4.0.0.
После Angular 4.0.0 вас ждет предварительный график дальнейших выпусков:
В конце Игор Минар подытожил:
Angular2 Webpack Starter [40] — представляет из себя репозиторий для быстрого старта с Angular [37]и TypeScript [41], посредством сборщика проектов Webpack [42].
Что включено в данный репозиторий:
Убедитесь, что у вас есть Node.js версии >= 5.0 и NPM >= 3.0
# клонируем наш репозиторий
git clone --depth 1 https://github.com/angularclass/angular2-webpack-starter.git
# выбираем директорию
cd angular2-webpack-starter
# устанавливаем зависимости посредством npm
npm install
# далее по желанию
# запускаем сервер
npm start
# запускаем Hot Module Replacement
npm run server:dev:hmr
Переходим на http://0.0.0.0:3000 [43] или http://localhost:3000 [44] в вашем браузере. Более подробно на официальном репозитории [40].
Курс даст возможность быстро начать создавать свои приложения с использованием одного из самых популярных фреймворков – Angular 2. В процессе прохождения курса шаг за шагом вы сделаете реальное приложение и хорошо разберетесь в специфике Angular 2. Курс на английском, но на самом деле, если у вас хромает язык, главное попытаться вникнуть в код, который пишет автор, в основном все прикрепляется слайдами, которые тоже интуитивно понятны. Платить ничего не нужно, сиди и развивайся.
Если Angular 1 был монолитным проектом, то теперь Angular 2 следует рассматривать как платформу.
Angular 1 использовал 43 встроенных директивы, теперь в Angular 2 мы используем [ ] и ( ).
Изначально Angular 1 весил 56K. При этом ядро самого Angular 2 было — 170K. Angular Team оптимизировали тонны кода и теперь ядро Angular 2 весит 45K.
Основная задача Angular Team была в том, чтобы добиться автоматической отложенной загрузки. Это гарантирует нашим приложениям только то, что необходимо для текущей страницы. Ленивая загрузка также была включена при маршрутизации в приложениях.
По сравнению с первой версией приложения на Angular 2 работают в 2,5 раза быстрее, а перерисовка в 4,2 раза быстрее. Команда Angular считает, что она может сделать рендеринг еще более быстрым.
Во времена Angular 1 появилось большое количество руководств по написанию кода. Это привело к большому количеству отличительных стилей, что привело к разночтению в Интернете. Для Angular 2 теперь есть официальное руководство по стилю [47].
Angular Material [48]выглядит действительно хорошо. Использовать материальный стиль в вашем приложении достаточно легко, просто встраивайте компоненты.
Angular Mobile Toolkit [49]позволит легко создавать веб-приложений, которые загружаются мгновенно на любом устройстве, даже без подключения к Интернету.
Прогрессивные веб-приложения [50] очень интересны для многих веб-разработчиков. Создание и повторное использование вашего кода для создания мобильного приложения с хорошей производительностью, почти равное нативному мобильному приложению. Angular Mobile Toolkit является еще одним шагом к осуществлению этой мечты.
Большой проблемой приложений на Angular 1 было то, что они собирались только в браузере. Это означает, что ваши приложения были совершенно SEO-неориентированные.
Команда Angular вынесли основной компонент сборки, и теперь ваши приложения можно собирать где угодно, в том числе и на сервере [51].
Достаточно легко это сделать при помощи NodeJS для сборки шаблонов на стороне сервера.
Наши приложения теперь будут работать еще быстрее для наших пользователей, теперь мы можем сэкономить драгоценное время рендеринга в браузере.
Самое приятное — это Angular CLI [52]. Установка приложения занимает много этапов, где много вещей может пойти не так:
Angular CLI делает установку простой в одну строку:
ng new scotch-app
Чтобы начать работать с Angular CLI, все, что вам нужно сделать, это:
npm install -g angular-cli
ng new scotch-app
cd scotch-app
ng serve
Больше нам не требуется Gulp, Grunt, Webpack, Browserify.
Например, это видео вполне объясняет как построить приложение на Angular 2:
Есть много интересных вещей, которые может сделать TypeScript [41]. Есть много причин, почему вы должны использовать TypeScript. Благодаря TypeScript Angular 2 стал лучше развиваться.
Любой человек, который использует Batarangle [53]с Angular 1 знает, что его способность видеть переменные и состояние вашего приложения в браузере является большим подспорьем при разработке.
Теперь есть Angular Augury [54], он позволяет нам сделать именно это. Нет необходимости в console.log () в каждой части вашего приложения, чтобы увидеть состояние переменной, иерархию и наследование в вашем браузере.
Вы можете построить приложение в режиме реального времени с Angular 2, Firebase [55]и AngularFire2 [56] примерно за 10 минут, например чат. Есть много функциональных возможностей, которые реализуются в короткий промежуток времени.
В то время как Angular Mobile Toolkit сосредоточено на создании прогрессивных веб-приложений, NativeScript [57]больше заинтересован на создании нативных приложений с Angular 2.
В чем разница, спросите вы? Например в анимации. Имея нативную анимации, отличную от браузерной все будет выглядеть гладко даже при большом количестве объектов.
Zone.js [58]библиотека для управления асинхронными задачи [59], способ управления контекстом выполнения. Много фантастических слов, но основная идея состоит в том, что тестирование будет намного проще в Angular 2!
Все эти асинхронные задачи отслеживаются благодаря zone.js. В своем видео Джули Ральф рассказывает как это работает:
Я очень горжусь тем, что Angular вырос из обычного фреймворка в целую платформу, благодаря которой теперь можно легко разрабатывать не только веб-приложения, но и нативные, не уступая в качестве. Много работы проделала Angular Team, и за это им я благодарен. Конечно, вокруг есть много всего хорошего, но быть частью чего-то большого куда приятней. С наступающим Новым годом дорогие читатели, мы желаем вам всего наилучшего и удачи!
Автор: splincodewd
Источник [60]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/227719
Ссылки в тексте:
[1] проведена первая конференция : https://www.youtube.com/watch?v=aJIMoLgqU_o
[2] Игор Минар: https://github.com/igorminar
[3] Angular 4: https://en.wikipedia.org/wiki/AngularJS#Angular_4
[4] бета-версия: https://github.com/angular/angular/blob/master/CHANGELOG.md
[5] Максим Иванов: https://habrahabr.ru/users/splincodewd/
[6] Дмитрий Сергиенков: https://habrahabr.ru/users/blackbaron/
[7] руководств по написанию фронтенда на ES6: https://github.com/toddmotto/angular-styleguide
[8] Почему Angular 4? Где Angular 3? Что происходит?: #s1
[9] Спецификация семантического версионирования: #s1_1
[10] Критические изменения не должны приносить боль: #s1_2
[11] Теперь это просто «Angular»: #s1_3
[12] Новые правила версионирования: #s1_4
[13] Почему мы решили все же пропустить третью версию: #s1_5
[14] Предварительный график релизов: #s1_6
[15] Вывод: не беспокойтесь: #s1_7
[16] Angular2 Webpack Starter: #s2
[17] Быстрый старт: #s2_1
[18] Содержательный видеокурс (eng): #s2_2
[19] Что хорошего появилось в уходящем 2016 году вместе с Angular 2: #s3
[20] Статистика: #s3_1
[21] Angular 2 быстрее: #s3_2
[22] Официальное руководство по написанию кода: #s3_3
[23] Материальный дизайн для приложений на Angular 2: #s3_4
[24] Прогрессивные web-приложения с Angular Mobile Toolkit: #s3_5
[25] Шаблонизация на стороне сервера : #s3_6
[26] Быстрая разработка приложения через терминал при помощи Angular CLI: #s3_7
[27] Большое количество туториалов: #s3_8
[28] Опциональная типизация в вашем web-приложении: #s3_9
[29] Хорошие инструменты для отладки: #s3_10
[30] Платформа для разработки бизнес-приложений Firebase: #s3_11
[31] Кроссплатформенные мобильные приложения с NativeScript + Angular 2: #s3_12
[32] Простое тестирование благодаря зонам: #s3_13
[33] Angular Team: https://github.com/angular
[34] SEMVER: http://semver.org/lang/ru/
[35] при сборке приложения выбиралась конкретная версия зависимых библиотек: https://blog.nodejitsu.com/package-dependencies-done-right/
[36] хотя и существует способ менее болезненно мигрировать на новую версию: https://angular.io/docs/ts/latest/guide/upgrade.html
[37] angular.io: https://angular.io/
[38] в одном репозитории на GitHub: https://github.com/angular/angular
[39] маршрутизатор пакетов стал сразу искать Angular 4: http://angularjs.blogspot.ru/2016/06/improvements-coming-for-routing-in.html
[40] Angular2 Webpack Starter: https://github.com/AngularClass/angular2-webpack-starter
[41] TypeScript: https://www.typescriptlang.org/play/
[42] Webpack: https://learn.javascript.ru/screencast/webpack
[43] http://0.0.0.0:3000: http://0.0.0.0:3000
[44] http://localhost:3000: http://localhost:3000
[45] Плей-лист курса Angular 2 Tutorials (27 видеоуроков): https://www.youtube.com/playlist?list=PL4cUxeGkcC9jqhk5RvBiEwHMKSUXPyng0
[46] Getting Started with Angular 2: https://school.scotch.io/getting-started-with-angular-2
[47] официальное руководство по стилю: https://angular.io/styleguide
[48] Angular Material : https://material.angular.io/
[49] Angular Mobile Toolkit : https://mobile.angular.io/
[50] Прогрессивные веб-приложения: https://developer.mozilla.org/ru/Apps/Progressive
[51] в том числе и на сервере: https://universal.angular.io/
[52] Angular CLI: https://cli.angular.io/
[53] Batarangle : http://rangle.github.io/batarangle-io/
[54] Angular Augury: https://augury.angular.io/
[55] Firebase : https://firebase.google.com/
[56] AngularFire2: https://github.com/angular/angularfire2
[57] NativeScript : https://www.nativescript.org
[58] Zone.js : https://github.com/angular/zone.js/
[59] управления асинхронными задачи: http://www.sdblog.ru/archives/zony-i-change-detection-v-ionic-2-i-angular-2/
[60] Источник: https://habrahabr.ru/post/318682/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.