Yêu và ghét Angular năm 2022

Cũng gần hết năm 2022, mình chợt nghĩ về  những gì mình trải qua khi mần với Angular gần 2 năm nên chia sẻ lại với anh em trong nghề chút. Nói trước là cái này 100% là cảm nhận cá nhân mà thôi, suy nghĩ có thể phần nào thiếu sót.

Cái “yêu” đầu tiên là Angular được phát triển bởi Google – một trong Big 4

Nếu mà nhắc tới Angular thì cái điều đầu tiên người ta nghĩ tới nó là được phát triển bởi Google và được chính Google xài rất nhiều trong cái dự án của Google. Nên đâu đó mình có một chút gì đó “an tâm” khi chiến với công cụ này. Phát triển một nền tảng như vậy đòi hỏi cần lượng lớn thời gian và tiền bạc. Nếu không có nguồn tài chỉnh ổn định khó lòng đảm bảo cái nền tảng này phát triển ổn định qua nhiều năm.

Dân ta thường có câu “đứng trên vai người khổng lồ”, do đó nếu chúng ta có thể mượn sức của gã khổng lồ này thì có thể yên tâm ngủ ngon.

Tuy nhiên cái nết này lại là cái “ghétnhiều nhất..hạ hồi phân giải hen…

Typescript

Có thể nói Typescript đã chiến thắng trong thế giới front-end năm 2022. Mình từng làm những sản phẩm công nghệ mà có những class có vài trăm properties trong đó. Chưa kể nếu việc sản phẩm đó phải bảo trì trên nhiều phiên bản khác nhau thì Typescript giúp ích rất nhiều cho việc bảo trì những sản phẩm công nghệ thế này.

Một trong những tiêu chí mình chọn thư viện phần mền năm 2022 đó chính là phải support Typescript .

“Ghét” đầu tiên là Angular là tool hay là product?

Mình chợt nghĩ là Google phát triển cái “món” Angular để làm cái gì đó cho phần lớn sản phẩm nội tại của Google..nhưng! Nhưng cộng đồng cũng đóng góp nhiều lắm lắm cho Angular mà..ấy vậy mà với nhu cầu rất lớn từ cộng đồng mà họ vẫn trì hoãn những gì mà cộng đồng muốn…Anh em có bao giờ “tức” vì

  1. Tại sao Angular không có gì “ưu thế nổi trội” về SEO, tương thích với Google Analyst các kiểu? Tức dễ sợ…Tại sao 2 “thứ” cùng tạo ra bởi Google mà chả có gì là xem nhau là hàng xóm…? Đã bao lần khách hàng đòi “tôi cần site support SEO nha nha” và bạn phải “tức” trả lời rằng bạn nên làm với NextJS.
  2. Trong khi thế giới rần rần về SSR, remix, qwik, và các thể loại server components gì đó nữa..còn với Angular thì sao? Mọi thứ khá cơ bản! chán…

Angular vs RxJS ở chung nhà…nhưng có thể sẽ chia tay…

Mình hay hỏi mấy bạn ứng viên là “Vì sao cần dùng RxJS khi xài Angular?” Câu trả lời mình nhận được có rất nhiều, có bạn nói nó xịn, giải quyết các vấn đề liên qua tới async vs event hiệu quả hơn, vân vân và mây mây…Riêng theo mình thì câu trả lời hợp lý nhất đó chính là “Phải dùng RxJs vì không có sự lựa chọn!”. Router, ReactiveForm, Cdk..là những thứ không thể thay thế khi xài Angular. Và những thứ này xài ‘RxJS’ trong nội tại và bạn phải thông qua ‘RxJS’ để sử dụng những thành phần này. Nói chung là xài Angular thì chạy đâu cho thoát RxJS.

Ấy vậy mà càng tìm hiểu về Angular thì mình càng cảm thấy Angular đang dần muốn không phụ thuộc vào RxJS nữa! Nếu bạn làm việc với Angular đã bao lần bạn tự hỏi nếu mình truyền Observable vào @Input thì sẽ thế nào nhỉ? Đã bao lần bạn đã nghĩ nếu Angular cung cấp mấy cái lifecyle hook như ngDestroy$ thì khỏe biết bao nhiêu nhỉ?

Vâng, bạn không phải là người duy nhất trên thế giới này có cái cảm giác đó đâu. Nếu bạn vào github xem những issues này bạn sẽ thấy nhiều người cũng có cùng ý kiến giống như vậy. Mình xin trích 1 đoạn của Minko từ một issue được tạo từ 2015 và chốt kèo không làm tận năm 2021.

That’s why we want to explore the alternative of making RxJS optional for @angular/core in the future. There would be ways to achieve this with minimal breaking changes that we can automatically migrate because the framework’s (@angular/core) runtime has a very lightweight dependency on RxJS.

https://github.com/angular/angular/issues/5689

Tích hợp với người ta cho đã giờ đòi ra riêng! Tương lai có thể Angular không cần RxJS nữa không chừng?

RxJS xịn! Nhưng liệu như thế có đủ?

Điều khá buồn cười đó chính là mình khá thích RxJS . Mình khá tự tin nói rằng RxJS năm 2022 là “mẹ của các thể loại event”. Chỉ có điều là gì….mình ko cảm thấy an tâm khi xài RxJS cho những sản phẩm lâu dài…Tại sao? Theo mình hen…RxJS phải được hiện thực bởi ngôn ngữ..chứ không phải là một cái thư viện gì đó..TC39 có một cái “proposal” để mang thứ Observable lên mức ngôn ngữ..mà 5 năm rồi, còn vẫn nằm đấy..Theo mình Observable phải như Promise, phải là cái gì đó ở mức cao hơn…

Tuy nhiên, để Angular tồn tại lâu dài, mình tin rằng Angular chỉ nên phụ thuộc vào ngôn ngữ mà thôi và không nên phụ thuộc vào một thư viện bên ngoài như RxJS.

ECMA 402 cũng chưa nghe nói gì món này…thật sự ko an tâm lắm!!!

“Chán” nữa là người đẻ ra Angular đi đâu mất..

Nói thật, cái này khá là không công bằng cho lắm khi nói về chuyện này..tới một lúc nào đấy không thể giữ chân những người tài năng như Misko. Cha đẻ của Angular bây giờ lại đi chế ra một cái framework mới nữa rồi. Cái qwik mới ý tưởng khá hay nó giúp giảm lượng Javascript mà browser phải tải xuống.

BuilderIO/qwik: The HTML-first framework. Instant apps of any size with ~ 1kb JS (github.com)

Bài khá ngắn..đơn giản mình cũng không muốn lan toản những cái không thích ra bên ngoài quá nhiều.