Quá khứ, hiện tại và tương lai của Angular.

Vào thời điểm của bản gốc bài viết này, Angular hiện đang ở bản 5.2 (chuẩn bị release bản 6.0).

AngularJS đã cực kỳ thành công và được đón nhận nhiệt liệt khi mới ra mắt năm 2010. Trở lại những thư viện khá phổ biến vào lúc đó như Dojo, Backbone và Knockout ở lĩnh vực phát triển web app.

Nhảy đến năm 2016, core team (đội ngũ chủ chốt) của Google, để kế nhiệm cho sự thành công của AngularJS họ đã tung ra Angular, hay còn gọi là Angular2... hoặc chỉ đơn giản là Angular. Angular được đón nhận rất nhiều từ sự phấn khích lẫn chỉ trích.

Với danh dự của một developer kha khá kinh nghiệm từ sớm bằng việc viết app Angular từ 2012, tôi đã chứng kiến sự thăng trầm của framework này và cộng đồng quanh nó phát triển như bây giờ.

2010 - Sự ra đời của AngularJS

Trước khi release (phát hành), một nhân viên của Google tên là Miško Hevery đang trong quá trình phát triển một side project. Project này dự tính sẽ giúp việc xây dựng web app dễ dàng hơn cho các project nội bộ mà anh đang làm. Project này sau này được biết đến như AngularJS (nghĩa là “góc” dựa trên dấu <> của HTML).

Qua tay cộng đồng và được dùng để làm ra các ứng dụng - Ionic - framework được xây dựng trên Apache Cordova của Ionic (trước kia là DriftyCo), cũng từng đổ “dầu vào lửa” cho phép các developer dùng AngularJS để tối ưu các mobile app của họ.

Vài ông lớn lúc này bắt đầu tích hợp AngularJS vào công cụ của họ để dùng phát triển các web app và mobile app.

2014 - 2015 - Cuộc đại tu lớn

Vài năm sau khi release, xu thế của việc phát triển web dần thay đổi và AngularJS gặp ngõ cụt.

Các bản cải tiến và tiêu chuẩn của JavaScript dần xuất hiện, AngularJS bắt đầu bị bỏ lại đằng sau. Quan trọng hơn hết, core team của Google chạm đến giới hạn và đã làm những gì có thể để cải thiện framework nhằm đáp ứng nhu cầu đang tăng dần.

Google và cộng đồng bắt đầu lại từ một project nội bộ nhỏ và đưa nó đến “tiền tuyến” như mobile app và các ứng dụng doanh nghiệp lớn. Tuy vậy, nó chưa bao giờ được dùng và thiết kế phù hợp cho những tình huống khi Miško lần đầu tạo dựng AngularJS. Từng pull request khi chúng ta tinh chỉnh AngularJS theo cách tốt nhất mà chúng ta thấy.

Khi core team bắt đầu release phiên bản 2.0, họ không muốn bị trói buộc bởi những xiềng xích từ bản thiết kế trước đó của AngularJS. Họ muốn xây dựng một framework từ nền tảng để giải quyết các khó khăn gặp phải khi viết các ứng dụng lớn và đa nền tảng. Đồng nghĩa với một cuộc đại tu.

Framework đã từng vươn xa để học hỏi và yêu thích này dự định sẽ có một tương lai hứa hẹn. Nhiều project của bên thứ ba như Angular Material (v1.x) và Bootstrap dần sẽ bị bỏ xó.

Có thể bạn thừa biết: AngularJS vs Angular

AngularJS 1.x

Luôn giữ số 1 qua các đời. Cho dù thay đổi lớn cỡ nào đi nữa thì version chính vẫn luôn là 1.x.x.

Angular 2.0

Core team đã quyết định sẽ dùng sematic versioning theo cấu trúc (Major).(Minor).(Patch). Nếu có một sự thay đổi đáng kể nào được giới thiệu, nó sẽ chuyển thẳng đến Major version. Vì khi release bản đầu tiên đã có 3 thay đổi lớn (chắc bạn thừa biết: ta bỏ phiên bản 3, nhảy từ 2 lên 4 để lấy các angular packages cho cân chỉnh).

2016 - Thời kỳ khủng hoảng

Cả developer và manager đều dần phát điên. Sự đại tu hoàn thành đồng nghĩa với một viễn cảnh diệt vong cho dự án Angular đang chạy dở. “Làm sao có thể hỗ trợ ứng dụng trong vòng 3, 5 hoặc thậm chí 6 năm nữa?!”.

Tệ hơn, không có một chiến dịch “di dân” rõ ràng để chuyển đổi ứng dụng AngularJS 1.x sang Angular 2.0.

Các team đành phải đánh cược và làm ứng dụng Angular 2.0 mới trong khi vẫn còn beta. Suy nghĩ chung hầu hết lúc đó là “Đành phải làm liều thôi nếu thứ này sắp bị đại tu”.

Và những gì họ nhận được là rất nhiều ý tưởng đáng thất vọng và nhiều sự thay đổi đáng kể sau từng đợt release. Thời điểm này, ai cũng quay lưng lại với AngularJS và hướng đến các thư viện khác như React. Các developer còn viết những dòng chữ chia tay với AngularJS một thời của họ.

Nỗi đau lớn dần

Tôi không trách ai thay đổi cả. Tôi hiểu là ai cũng cần một framework ổn định và đáng tin cậy để sống qua ngày chứ không phải cho tương lai, nhưng tôi nghĩ là có nhiều quan điểm không hay vẫn đang trôi nổi ngoài kia chỉ sau một thời gian ngắn dùng bản beta.

Các phần mềm khi ở bản beta thường sẽ có nhiều thay đổi khá hứa hẹn. Chúng vẫn chưa hoàn thiện. Giai đoạn đầu khá là vướng víu kể cả khi tạo một project Angular mới. Kích thước build khá lớn, cú pháp lạ lẫm, không quen thuộc, và nhiều thứ mới mẻ đột ngột ập đến các developer như TypeScript.

Các team phải google Angular và khi thấy những dòng chữ chia tay tuyệt vọng (đề cập ở phần trên) và sự lo ngại lớn dần khi phải đi theo con đường khác. Không may là họ không dành chút thời gian để đánh giá project của họ và xem xét đến tiến trình project của team.

2017 - 2018 - Hồi sinh từ tro tàn

Đến năm 2018: Angular đã có vài bản release chính để cố gắng ổn định. Từng bản release mang đến kích thước build nhẹ hơn, API ổn định hơn và hiệu năng nhìn chung tốt hơn.

Đó là một cái giá khá đắt phải trả, nhưng core team cuối cùng cũng thiết kế lại Angular từ những chi tiết ban đầu và nguyên thuỷ để cho chúng ta nhiều hơn những gì đã từng có trong 1.x. Không như các thư viện khác, như React, Angular thật sự cung cấp giải pháp cho từng góc độ, khía cạnh khi viết phần mềm lớn. Các thư viện như React vẫn cần các project bên ngoài để lấp đầy những mảnh ghép còn thiếu trong project chính của chúng ta. Thật sự cái gì cũng có hai mặt, mạnh và yếu nhưng đó là một câu chuyện khác.
 
Tôi thấy đa số các phản hồi tiêu cực của Angular là từ trước phiên bản 2.0. Vài người có lẽ không thích luồng gió mới từ Angular. Nhưng sao cũng được, mỗi người mỗi khác.

Từ khi bản release ban đầu, vài công cụ tuyệt vời như Angular CLI đã luôn giúp cho việc phát triển Angular có nhiều trải nghiệm tuyệt vời. Các project khác cho một Angular mới như Angular Material, Bootstrap và Ionic cũng đã cải tiến dùng trong môi trường sản xuất để thích hợp cho bản Angular mới này.


Sự phát triển các nền tảng qua các năm - Stackoverflow

Tiếp bước

Và còn anh bạn già AngularJS, nó vẫn được hỗ trợ. Core team còn thông báo rằng sẽ release bản final 1.7 và sẽ được hỗ trợ dài hạn.

Angular còn gì để bắt kịp thời đại không? Có nhưng khoảng cách đủ nhỏ để bớt quan tâm. Ích lợi của việc điều hành một framework đã được hợp nhất có thể bật lại những khái niệm mong manh của một vài team.

Nhiều API ổn định và nhiều nguồn project để vận hành phần mềm riêng của chúng ta. Angular giờ đây đủ sức để đương đầu với việc viết những phần mềm đồ sộ cho những team lớn.

Angular cuối cùng cũng lấy lại được vị thế đã mất của nó để tiếp tục phát triển.