Немного эксклюзива от Rob Wormald про IVY. В прошедший четверг прошла закрытая сессия QA от nrwl. Который, конечно же, я пропустил, но они все таки прислали видео. Видео не могу опубликовать, но пересказать на свой лад, считаю нужным.
- Это уже 4 попытка сделать оптимизированный рендерер, мы пытаемся сделать это уже в четвертый раз, поэтому и такое название - IVY. В то время, когда мы делали AngularJS, веб технологии опережали сам фреймворк, и были естественные ограничения. И я считаю, мы создали хороший фреймворк (Angular) для больших enterprise приложений. И когда у вас такое большое приложение, размер приложения не имеет такой большой разницы, на 100кб больше или меньше, какая разница? Но когда вы делаете свой маленький блог, размеры приложения начинают играть важную роль. Летом прошлого года, мы начали делать новый рендерер. У нас (в Google) много приложений на Angular. И мы должны заботится о старых решениях, чтобы их так же перевести на новый rendrer. На данном этапе не стоит ожидать от Ivy чего то сверхестественного.
Когда смотрите на NgModule вы не видите его, вы смотрите на компонент, а в NgModule происходит невидимая магия.
Если дадите нам шаблон, мы сделаем из него оптимизированный js код, и это будет быстрее работать чем например простой jsx в react. Так что, это действительно хорошая вещь.
- Так что касается производительности?
- Вы не получите болшого скачка в начале, но конечно же вы уберете много неиспользуемого мусора. В некоторых сценариях это будет работать медленнее, в некоторых быстро. Но опять же это мои предлположения, нужно смотреть тесты.
- Как насчет начальной загрузки?
- Первая загрузка станет легче, так же ждут кардинальные улучшения и упрощение LazyLoad. Вы просто загружаете компонент и показываете его, в отличии от загрузки модулей. Да это был хороший подход (NgModule). И мы разрабатываем совершенно новую вещь, и одна из этих принципов была - идея локали.
Да, вы все знаете зачем нам ранее нужно было анализировать весь код, собирать приложение целиком и т.д. (Тут он про metadata.json и принцыпы упаковки модулей в npm для angular, почему это хорошо и т.п.) Поэтому принцип локали будет означать, что вы будете компилировать компонент локально. (Принося директиву и т.д. отдельно, не связывая в один NgModule). И это даст, я считаю, легкость в обучении Angular, так же в тестировании приложений. Самое замечательное что это будет совместимо с предыдущими версиями.
- А что насчет Angular Elements?
- (кратко) с Ivy весь ненужный мусор удалится.
- А что с CD и Zone.js?
- Тут нужно понимать что Zone.js и CD разные вещи, да Zone.js блестящее решение для отработки большинства случаев, но все вы знаете какие недостатки у этого подхода есть.
Ivy разработаны так, чтобы не полагаться на зоны, они могут работать и без них. Да, вы можете всегда дернуть cd чтобы изменения обнаружились. Пока мы не знаем, какое правильное решение будет для большинства разработчиков.
(тут немного про компиляторы tsc, ngc)
- Так когда выйдет Ivy?
- Я не буду оглашать точную дату (тут приводит что нужно пройти много тестов и т.д.) Но мы довольны производительностью. В нашем внутреннем репозитории более 95% тестов проходит. И мы пробуем на наших внутренних (Google) приложениях, и если это будет работать у нас, то будет работать и у остальных разработчиков.
И последнее что я хочу сказать - у нас есть огромная клиентская база, и мы не сможем так же перескочить как с angularjs на angular. И поэтому мы сдержанны в предоставлении информации, мы должны быть уверены что пользователи получат стабильное приложение, и должны подождать пару дополнительных месяцев, чтобы получить новую хорошую вещь.