Каждую неделю мы получаем вопрос: "Когда уже Ivy будет готов?". Пришло время рассказать, как обстоят дела с версией 8.0, а также поделиться с вами планами по доведению до ума и релизу движка Ivy.
В восьмой версии, выходящей во втором квартале текущего года, мы хотели бы ввести возможность опционального включения предварительной версии Ivy (Ivy Preview).
Что нового в версии 8.0
Пока большая часть нашей команды с головой ушли в разработку, мы готовы представить несколько обновлений для версии 8.0, над которыми мы так усердно работаем. Стоит заметить, что некоторые возможности в окончательной версии могут отличаться от описанного ниже.
- Дифференцированная загрузка современного JavaScript.
CLI теперь будет создавать бандлы как устаревшего (ES5), так и современного (ES2015+) стандартов JavaScript в рамках процесса сборки, которые будут загружаться на стороне клиента в зависимости от браузера, тем самым уменьшая скорость загрузки и время до первого взаимодействия в современных браузерах. Данный функционал разработан совместно с Мэнфредом Стейером и основан на его проекте ngx-build-modern. - Возможность подключения Ivy Preview.
Оцените как будет работать ваше приложение с Ivy и сообщите нам свои впечатления, чтобы мы могли внести необходимые корректировки в финальную версию. - Полная совместимость с предыдущими версиями роутера Angular.
Мы добавили режим обратной совместимости, который упростит процесс обновления объемных проектов. Разработчикам будет легче перейти на Angular, разрешив отложенную загрузку частей приложений AngularJS с помощью $route API. - Улучшенный бандлинг Web Worker'ов.
Веб-воркеры — отличный способ написания кода, который запускается в отдельном потоке, что ускоряет работу и улучшает параллелизуемость приложения. По многочисленным просьбам разработчиков, интерфейс командной строки будет поддерживать бандлинг веб-воркеров. - Отправка данных об использовании (опционально).
Мы добавим телеметрию в интерфейс командной строки, чтобы как можно лучше понимать нужды разработчиков. С вашего согласия, мы будем собирать анонимные данные вроде используемых вами команд или скорости сборки. Чем больше у нас будет информации о том, как разработчики используют Angular, тем лучше мы сможем сделать наш продукт. - Обновление зависимостей.
Как и всегда, мы обновим зависимости, в частности TypeScript, RxJS, и Node, дабы не отставать от остальной части экосистемы JavaScript.
Как будет выглядеть дальнейшее развитие Ivy?
В версии 8.0 мы хотели бы ввести возможность включения Ivy Preview. Если вы не знакомы с Ivy, посмотрите презентацию Кары об Ivy на конференции Google I/O 2018.
В предварительной версии будет возможность переключаться между Ivy и стандартным View Engine. Более подробную информацию об этом можно будет найти в последующих бета версиях. Если приложение будет собрано компилятором Ivy, то любые зависимости из Angular или других сторонних компонентов будут по-прежнему работать, благодаря прогону через компилятор совместимости. С помощью предварительной версии вы сможете обнаружить ошибки при подключении зависимостей и помочь нам доработать компилятор.
Чего можно ожидать от Ivy Preview:
- Сгенерированный код, который легко читать и отлаживать во время исполнения
- Уменьшение времени пересборки
- Оптимизированный размер бандла (уменьшение размера бандла уже заметно на реальных приложения, однако в будущем планируются еще некоторые улучшения по данной части)
- Усовершенствованная проверка типов шаблонов
- Полная совместимость с предыдущими версиями
Ivy пока не готов покрыть все варианты использования. Некоторые фичи, такие как i18n в Angular Universal, скорее всего, не будут поддерживаться в превью. В частности, Angular Language Service не будет работать с Ivy Preview.
Цель предварительной версии — перенос существующих приложений на движок Ivy без необходимости их переписывания. Также существует множество специфичных для Ivy API, которые мы позже добавим к своему публичному API в рамках Angular Labs и будущих релизов.
Когда всё будет готово?
В апреле 2019 мы планируем представить release candidate, а месяцем позже — релиз общедоступной версии 8.0.0, но твёрдых гарантий по поводу сроков мы дать не можем. В версии 8.0.0 Ivy Preview призвана проверить тезис о полной совместимости с предыдущими версиями Angular. Также это позволит нам разработать автоматизированные инструменты миграции, которые могут понадобиться в дальнейшем.
Мы хотели бы принудительно включить Ivy для всех в следующей мажорной версии, планируемой к выпуску этой осенью, поскольку мы нацелены на достижение полной совместимости с предыдущими версиями и поддержку существующих приложений.
Введение полной функциональности Ivy в девятой версии откроет множество возможностей для разработчиков, и это не может не радовать. Вскоре мы поделимся своими планами по введению новых фич, API, особенностями использования Ivy и разработки с его помощью.
Следите за нашими постами в блоге, твиттере и приходите на конференцию ng-conf, чтобы узнать больше о наших планах.
c_kotik
Может кто подскажет по возможностям реализации такой задачи, как динамическая подмена (изменение) шаблона компонента? Возможно будет реализовать функцию с предстоящей предварительной Ivy Preview?
Или для реализации стоит ждать более поздних обновлений.
Хотелось бы избавится от костылей и JIT.