Во время ng-conf в мае 2019 года команда Angular объявила, что они изменят то, как Angular работает под капотом: Ivy. Ivy - это их новый механизм рендеринга внутреннего представления. Это движок, который использует ваши компоненты и шаблоны и, в конце концов, превращает всю логику в инструкции, которые запускаются в браузере, когда вы отправляете готовое приложение Angular. Эти инструкции обновляют DOM, обновляют страницу и так далее.

У Angular 9 должен был быть стабильный выпуск в октябре / ноябре, но он был отложен, потому что замена движка рендеринга - непростая задача. Но ожидание закончилось, и Angular 9, а значит, и Ivy, наконец-то здесь! В моем текущем клиенте мы, не колеблясь ни секунды, запустили его и начали обновление. Позвольте мне рассказать вам о том, как мы к этому подошли.

1. Обновите все пакеты 📦

Это самый очевидный. Мы должны изменить все наши зависимости на их более новые версии. Мы отказались от использования функции ng update и вместо этого создали новый проект, чтобы начать с чистого листа. Согласно прогнозам команды Angular, Ivy может уменьшить размер вашего пакета на целых 40%. Для нашего приложения размер пакета уменьшился на целых 58%! Это изменение настолько значимо, что определенно положительно повлияет на впечатления наших пользователей.

2. Включить строгую проверку шаблона 🛂

Немного менее известно, но в вашем tsconfig вы можете включить strictTemplates. Когда он установлен, он проверит, что привязки ваших компонентов могут быть назначены их входам, а также выведет правильный тип $ event в привязках.

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

3. Обновите наши модульные тесты 💉

Angular 9 исключил метод TestBed.get в модульных тестах и ​​заменил его на TestBed.inject. После обновления это привело к сокращению времени, необходимого для завершения наших конвейеров. Кроме того, это делает фиктивный объект типобезопасным! Меньше багов, счастливой жизни!

4. Используйте обработчик npm postinstall 🎣

В нашей команде мы управляем несколькими приложениями, которые объединены в монорепозиторий Angular CLI. Оказывается, Айви еще не был готов выполнять параллельные сборки, которые мы делаем в наших конвейерах.

Установив обработчик postinstall, убедитесь, что мы скомпилировали наш node_modules, прежде чем мы фактически начали создавать приложения. Это не только ускорило наши сборки, но и позволило нам создавать их параллельно. Для любопытных, вот скрипт, который мы используем:

”postinstall”: “ngcc — properties es2015 browser module main — first-only — create-ivy-entry-point — async false”

5. Мы празднуем свой успех 🎉

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

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

Как видите, обновление прошло относительно гладко. Я хотел бы думать, что это отчасти из-за «Дня совершенствования». На каждый спринт у нас отводится целый день, в течение которого мы не сосредотачиваемся на работе в рамках спринта, а работаем над поддержанием нашей инфраструктуры и фундамента. В наши дни убедитесь, что мы всегда обновляем наши зависимости, удаляем устаревшие функции, избавляемся от технического долга и готовимся к грядущим выпускам фреймворков и инструментов, которые мы используем. Но самым движущим фактором нашего успеха в основном является опыт, целеустремленность и целеустремленность нашей команды!

Кто я?

Я старший фронтенд-инженер и консультант, работаю техническим руководителем в Techspire в Нидерландах. Работаю в области фронтенда почти 10 лет и до сих пор люблю это каждый божий день. Моя основная специализация связана с Angular. Как настоящий компьютерщик, я люблю расширять свои знания и хорошо разбираюсь в Python, Ruby on Rails и AWS.

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