Angular Fanatic
1.25K subscribers
44 photos
2 videos
3 files
220 links
Ангуляр в каждый проект!
__________
Канал на паузе
Download Telegram
🅰️ Говорят что сегодня выйдет Angular 13

Заметки были тут ну или changelog
This media is not supported in your browser
VIEW IN TELEGRAM
Вышел Angular v13 🥳

Кратко:
- быстрее, лучше =)

Подробнее: goo.gle/angular-v13
Что нас ждет в Angular 14 ?

- Standalone components
- Быстрый ng serve за счет typecheck в background + поставки только ESM, примерно как Vite
- Типизированные формы (не факт, этих PR очень много), ну а если вам срочно надо, можно поюзать ngneat/reactive-forms

👉 Подробнее
💡Что нужно чтобы написать свой компилятор для Angular:
1. лексер, можно брать любой html подобный.
2. парсер, сделать самому чтобы вырабатывал AST, подобно (anguar/compiler - astexplorer.net)
3. render свой, в терминах angular - render3
4. wrap tsc, особенно в той части где Decorators
5. print -> js

Но это конечно только вершина того что есть в compiler, дорабатывающего его 10x инженерами уже в течении 5ти лет.

ngc - AOT compiler, ну и общее наименование компилятора
ngcc - компилятор до ivy либ, должен был в ng 13 уйти
ngtsc - wrapper над tsc

👉Подробнее про Архитектуру Ng Compiler


🤖Решил я тут на выходных написать свой компилятор Angular, на волне с хайпом esbuild на Go, ну чтоб значительно убыстрить сборки Angular.

Начал конечно без конкретного погружения в esbuild, надеясь что его API позволит сделать желаемое.

Пройдя по верхам 1го и 2го пункта, написав свою реализацию на Go, пропустив 3й перешел на 4й.

Esbuild сам по себе быстрый сборщик, но его api не под каждого, и расширять этот api автор явно не планиреут. К тому же сам парсер esbuild может пропускать некоторые вещи es, если они не нужны в плане bundler.
Итог: Esbuild умеет многое и быстро, но только если у вас проект схож с автором. Но если когда нибудь команда angular отвяжет свою сборку напрямую от tsc, то можно будет юзать различные сборкщики.

👻 Парсер для примера я опубликовал ng-template-parser , хотя в нем только базовые вещи, он работает в 26раз быстрее чем @angular/compiler/parseTemplate, в комментах расскажу мои мысли почему второй медленный. Поставте star если проект вам интересен =) и тогда я его доработаю, и можно будет его заюзать например в линтерах.

----
Следующий этап будет написание под swc и на Rust. SWC такой же быстрый, имеет поддержку таких проектов как Deno, Next.js, Parcel, strapi. С дружелюбным API, и открытым к разговору автором.
Angular Fanatic
Вышел Angular v13 🥳 Кратко: - быстрее, лучше =) Подробнее: goo.gle/angular-v13
говорят ngUpdate -> v13 делает сборку в 2 раза быстрее и бандл чуть меньше

пруфы
Roadmap для Nx 14

По Angular
- Angular 13 + NgRx 13 Support
- TailwindCSS Support
- migrating from Angular CLI (multiple projects)
- SCAM generator for Standalone Components
- "create-modern-angular-app" пакет для создания минимального окржения Angular
Буквально через час в 20.00 мск мы соберемся на очередной NgRuAir #19

Тема: Angular 13 обзор

В этом выпуске мы обсудим фичи Angular 13, и фичи предстоящего Angular 14, а так же заглянем в обновленный недавно roadmap

YouTube
Angular Fanatic
💡Что нужно чтобы написать свой компилятор для Angular: 1. лексер, можно брать любой html подобный. 2. парсер, сделать самому чтобы вырабатывал AST, подобно (anguar/compiler - astexplorer.net) 3. render свой, в терминах angular - render3 4. wrap tsc, особенно…
Продожение приключений с ng template parser 👻

Оставалось реализовать ng expression. Выражения достаточно сложные потому что в Angular можно писать очень странные штуки вида:

{{val === true ? 1+1 : valie > 1 ? 1+1 : method()["Oups"][1][2] - method2(33) | myPipe:'lol'}}

Перед тем как реализовать все с нуля я вспомнил что есть такая замечательная штука как SimplePEG. Которая позволяет описать PEG грамматики и сделать на основе него парсер. Этим легким путем (как казалось в начале) я и пошел.
Составлять грамматики в PEG очень просто и интуитивно. Поэтому за вечер получил ng expression.

Так как ng template parser у меня написан на Go, требовалась поддержка SimplePEG тоже на Go. Ну я и написал его SimplePEG/Go
Адаптация его под другие языки не так сложна, даже для строго типизированных языков.
Что такое SimplePEG - можете посмотреть в докладе его создателя Алексея Охрименко

---
Время benchmark =)

Как оказалось моя реализация expression parse не такая уж и быстрая, слишком сложный получился grammar. Вдобавок моя реализация SimplePEG на Go имеет узкое горло в виде парсинга regex подобных выражений, который в свою очередь опирается на std regex go. И как оказалось Gо в этом плане предпоследний по скорости среди всех языков: regex-benchmark

Поэтому ng-template-parser получился такой же по скорости как и angular/compiler/parseTemplate
---

🔜 Что дальше?
- написать свой парсер псевдо regex (?)
- написать expression parser на LR/GLR грамматиках
- перейти наконец то на swc и rust =)
Мы долго ждали и кажется это наконец-то случится!

Вероятнее всего Angular 14 будет включать в себя доработку, которая подарит нам типизированные формы.

Но что бы покрыть как можно больше кейсов и оправдать ожидания сообщества команда Angular прямо сейчас собирает обратную связь и для этого представила RFC с описанием прототипа новых форм. Мы еще можем повлиять на конечный результат!

https://github.com/angular/angular/discussions/44513
Думаю начать постить даиджест недели по ПН.

1. Как повлияет SCAM на архитектуру Angular приложений
Manfred Steyer начал выпуск серии статей про SCAM.

В целом движется к тому чтобы работало как обычные es import. Жду когда подобные изменения затронут Angular Elements и будет малый рантайм.


2. В nx появился @nrwl/js специально для проектов только на js/ts. Из интересного:
- можно сразу установить в качестве tsc -> swc
- можно собрать секцию scripts в package.json из executors в project.json

#ngweekly
1. AngularJS - End of life
В 2018 году был поставлен на 3 года в статус Long Term Support. В 2020г из за COVID, был продлен до 31.12.2021. Жизненный цикл крупного фреймворка длился 12лет. issue останутся открытыми.

2. Состояние CSS в Angular - статья
Краткое описание изменении в CSS за последние 2 релиза.

3. Enterprise Angular - eBook
Manfred обновил свою книгу. Материал для тех у кого заведен или интересен ModuleFederation, с 87 страницы решение возникающих проблем. Бонусом добавлен раздел про nx generation tools (чуть больше чем официальная дока).

#ngweekly
Теперь можно не только почитать RFC по типизированным формам, но и попробовать!

И это можно сделать несколькими способами:

1. Прямо в браузере. Ловите ссылку на проект в StackBlitz

2. Локально. Для этого склонируйте вот этот репозиторий и запустите как обычно Angular приложение.

3. В своем проекте. Для этого нужно обновить фреймворк до последних next-версий с помощью CLI

ng update @angular/core --next

Проверить, что все angular-пакеты имеют суфикс next в версии, подменить версию пакета @angular/forms на https://1097395-24195339-gh.circle-artifacts.com/0/angular/forms-pr43834-a245792aa2.tgz и запустить миграцию.

ng update @angular/core --migrate-only migration-v14-typed-forms

Более подробные инструкции можно найти все в том же RFC
ESbuild под Angular.

Эксперементальный проект, в котором затащили ng как плагин в esbuild.

Из фич - быстрый холодный старт, и только для dev режима, так как компилятор затаскивается в рантайм.
Интересно реализован "выборка декораторов", потому как сам esbuild таких фич не предоставляет.

При пересборке проекта разницы между angular/cli на своей машине не заметил.

https://github.com/cherryApp/ngc-esbuild
Typed Reactive Form RFC update

RFC закрыт! Команда Angular обещает соблюсти обговоренные дизайн и надеется зарелизить фичу без ломающих изменений. Из-за этого пришлось пойти на компромисы, например, FromControl должен содержать тип null.

Подробнее об этом можно почитать тут
https://github.com/angular/angular/discussions/44513#discussioncomment-2038985
Standalone Components

Команда Angular начала вливать наработки по Standalone Components.

В этом PR разработчики принесли поддержку флага standalone и imports для компонента.

Слудующий PR реализует поддержку импорта одноиночных компонентов в NgModule. PR пока в статусе черновика.

Более подробно о предложении по Standelone Components и Optional NgModules мы писали ранее тут
Forwarded from kirjs_ru
https://blog.angular.io/angular-v14-is-now-available-391a6db736af

Вышел Angular 14
- Типизированные формы
- Standalone Components
- Возможность указать Title в роутах
- Улучшены сообщения об ошибках
- Несколько новых правил линта (научат вас правильно писать банан в коробке)
- Сообщения об ошибках теперь подгружаются когда нужно
- TypeScript 4.7 (с es2020)

И много всего другого интересного, надеюсь разберем на днях на стриме
http://goo.gle/angular-event

Сегодня по идее выпуск Angular 17. (Разработка v16 прекратилась 3 ноября)

Какой то интриги навели,
Из очевидного:
- Расскажут о том как могут работать с esbuild, vite, и за счет этого ускорили сборки
- Про новый синтаксис в шаблонах
- Про сигналы, и что их можно юзать полноценно (про change detection)
- Обновление всяких third part dependencies
Не очевидное:
- public api для генерации документации, с учетом JsDoc и ангуляровских декораторов
Невероятное:
- Сменят логотип?

накидывайте варианты в комментах
- новое лого
- новый сайт документации (https://angular.dev/)
- завершили таску с регидрацией (SSR)
- новый синтаксис Control Flow
- Input transform
- Esbuild для билда, webback deprecated в будущем
Просто взгляните на эти показатели, c новым control flow и без зоны ☄️

https://krausest.github.io/js-framework-benchmark/current.html