Bạn có thật sự nghĩ rằng Angular có learning curve kinh khủng hơn so với React hay Vue?



  • Bạn có thật sự nghĩ rằng Angular có learning curve kinh khủng hơn so với React hay Vue?

    Angular learning curve.png

    Bây giờ hãy điểm qua các công cụ để xây dựng các ứng dụng thực tế:

    • Component: đây là thành phần chắc chắn là core principle của các framework. Chúng đều xoay quanh các ý tưởng về việc tái sử dụng, maintainable, và scaleable code. Trong Angular thì Component cũng không quá khác biệt về mặt ý nghĩa. Nó chỉ là một implementation của một idea/abstract kia. Trong tương lai, component của Angular sẽ dễ hiểu hơn vì nó không phụ thuộc vào NgModule nữa (tránh được rất nhiều sự bối rối khi người mới tiếp cận).

    • Directive: Đây có lẽ là thành phần quen thuộc hơn cho mấy bạn dùng Vue. Nó cũng chỉ là 1 cách để khiến cho Component có thể dễ dàng compose, dễ dàng mở rộng.

    • DSL: Angular cung cấp một số Domain-specific language feature, chính là việc các bạn sử dụng template của nó. Có một số cú pháp như NgIf, NgFor, hay các Directive. Nhìn chung core của Angular các bạn có thể học trong 1 ngày là hết mấy cái đó. React chắc là ít hơn chứ Vue thì cũng same same với Angular về vụ này.

    • Forms: Angular cung cấp sẵn, các bạn có thể sử dụng thêm lib của bên thứ 3 nếu muốn. Form của Angular cung cấp cũng khá mạnh mẽ và nhiều tính năng. Với React bạn sẽ cần dùng của bên thứ 3 như React-Hook-Form hay Formik. Vue cũng cung cấp Form, nhưng về tính năng thì không bằng. Ví dụ: form validation (sync & async).

    • HttpClient: Angular cung cấp sẵn một phiên bản khá hoàn thiện. React và Vue thường cần đến axios hoặc tương tự.
      State Management: Angular có built-in hoặc bạn có thể kết hợp sự bổ trợ của Services. Ngoài ra, còn có khá nhiều giải pháp khác: NgRx, Component Store, Akita,... React và Vue cũng có built-in nhưng việc lựa chọn dùng built-in hay giải pháp khác khá quan trọng ở thời điểm bắt đầu dự án, nếu không đến lúc phình lên thì câu chuyện lại hoàn toàn khác. Lúc này, nếu dùng Redux/Vuex (hoặc tương tự) thì bài toán này đều phải học thêm các concepts của bọn nó.

    • DI, Reactive Programming: đây chắc có lẽ là 2 phần khó nhất của Angular. Nếu một người không có kinh nghiệm về 2 thứ trên thì đây rõ ràng là điểm yếu chí mạng. Nhưng cái gì cũng có 2 mặt. Có sự phức tạp thì cũng có use case cho bọn nó dùng đến.

    • Dev Tools: Đây là vấn đề tranh cãi, có người thích Angular có sẵn Angular CLI, nhưng có những người nghĩ rằng những gì mà nó cung cấp là thừa thãi, thích free style theo kiểu tự config WebPack bên React hơn. Nhưng có người ngược lại. Dù là kiểu gì thì cũng phải học thêm mấy bọn này để dùng cho công việc được hiệu quả hơn.

    • Documentation: Đây cũng là vấn đề với Angular. Do có lượng document đồ sộ nên người mới dễ bị ngợp. Nhưng thời gian gần đây, team Angular cũng đã cải thiện đi khá nhiều. Đặc biệt còn làm video chính chủ để chia sẻ về những thứ của framework.

    • Router: Cái này khỏi bàn, SPA mà không có router thì coi như dùng bản trial của phần mềm vậy. Framework nào rồi cũng phải học. Angular nó cung cấp đầy đủ từ config router tới những cái như Guard, Events. React phải dùng thư viện bên thứ 3, nó cũng cần các bạn phải có am hiểu một số thứ.(ví dụ implement route guard theo dạng configuration).
      Hiện tại, mình đang chỉ nghĩ được như thế. Với bản thân mình, phát triển một ứng dụng mà nghĩ làm nhanh thì thực sự Frontend Framework bây giờ không nhanh như thời chỉ dùng jQuery trước đây. Còn để phát triển ứng dụng lâu dài thì khả năng luôn phải tính trước một plan để rewrite trong tương lai =))).

    Update: nếu bạn nào nói React không phải Framework thì hãy thử suy nghĩ xem bạn có thật sự chỉ dùng mỗi React hay sẽ liên quan đến cả ecosystem.

    Update 2: bài viết bỏ qua phần testing, vì thật sự không có quá nhiều bạn ở VN có cơ hội tiếp cận dự án có unit test chẳng hạn. Giờ đây các bạn sẽ dùng các tools quen thuộc như Jest, Cypress nên sẽ đều phải học bọn chúng nếu dùng trong dự án.

    Nguồn: http://tiepphan.com


Log in to reply
 

});