Разработчики Angular-а вроде бы еще совсем недавно порадовали нас выходом четвертой версии, как в сети уже вовсю идет обсуждение, чего ждать от пятой. В данной статье я вам расскажу, какие изменения планируются в осеннем релизе.
AOT по-умолчанию
Хочу отдельно отметить, что большая часть изменений в этой статье, так или иначе являются следствием перехода на AOT.
В текущей версии фреймворка есть два типа компиляции проекта: быстрый JIT (Just In Time) и медленный AOT (Ahead of Time). JIT, благодаря своей простоте и скорости рекомендуется использовать во время разработки на dev-среде. При AOT-компиляции используются различные оптимизации, за счет чего процесс сборки происходит заметно медленнее. Скорость сборки затрудняет использовать AOT при разработке, однако его рекомендуется использовать для production-build-ов. Полный перечень преимуществ AOT перечислен тут.
Исходя из этого списка преимуществ, а также чтобы устранить различия в сборках, разработчики Angular планируют сделать AOT-компиляцию по-умолчанию (не уверен насчет намерений выпилить JIT совсем, скорее всего он останется, но включать его придется ручками).
Режим отслеживания изменений (watch) для ngc*
*ngc - Agular Compiler CLI (@angular/compiler-cli)
Следствием перехода на AOT станет инкрементальная сборка изменений. И, чтобы не запускать каждый раз ручками ngc, в нем добавится режим watch, для отслеживания изменений в файлах проекта и внедрения этих изменений в сборку. Разумеется, данное изменение будет внедрено также и в AngularCLI.
Шаблоны больше не будут компилироваться в *.ngfactory.ts файлы
В настоящий момент код шаблонов собирается TypeScript файлы с расширением *.ngfactory.ts. С использованием AOT, код шаблонов будет собираться в общий bundle сборки, что в свою очередь упростит отладку кода шаблонов.
Проверка типов в шаблонах
Как следствие предыдущего пункта, будет улучшена проверка типов используемых переменных в шаблонах, а также будет переработан вывод об ошибках в отладчик. Планируется сделать отладку шаблонов более простой и наглядной.
Сообщения об ошибках
Вывод отладочной информации планируется исправить не только в шаблонах, но и во всей библиотеке в целом. Если вы уже успели достаточно поработать с четвертой версией, то уже могли оценить прогресс относительно второй. Но нет предела совершенству, и в пятой планируется провести еще ряд улучшений. К сожалению, пока не ясно что именно планируется изменить.
Плавное обновление
Те, кто уже успел перескочить со второй версии на четвертую, не могли не заметить насколько просто это было сделать. В пятой версии хотят продолжить эту новую приятную традицию и сделать все, чтобы для перехода на с Angular 4 на 5 произошел как можно более незаметно. Возможно, будет реализована система автоматического uprade-а, например, встроенная в AngularCLI.
Tree-Shakeable компоненты
При сборке проекта, компилятор строит дерево зависимостей с самого первого входного узла, разветвляясь до самого низа. При этом, некоторые из этих ветвей никогда не используются в текущем проекте (вы можете сами оценить процент неиспользуемого кода, например, в новом DevTools). Tree Shaker (дословно "тот кто трясет дерево") отбрасывает потенциально никогда не используемые в вашем проекте компоненты и зависимости, тем самым уменьшая размер конечного bundle-а и увеличивая производительность всего проекта в целом.
Это изменение тоже (сюрприз-сюрприз!) является следствием введения сборки с помощью AOT.
Прочие изменения
- Ленивая загрузка Angular
- Bolierplate для Less
- Улучшения в AngularCLI
- Увеличение производительности
- Улучшения работы router-а
- Больше документации и примеров
По мотивам статьи: What to Expect for in Angular v5?