Flutter và React Native là hai framework được rất nhiều người quan tâm ở thời điểm hiện tại. Điểm chung của cả 2 đều là Cross Platform Mobile, build native cho cả Android và iOS. Cả 2 có thể giao tiếp với native để viết các module base on native (gần như bắt buộc). Hãy cùng nhìn qua những ưu điểm và nhược điểm của cả hai công nghệ này nhé.
Bài viết này được đăng tại anhben.com, không được copy dưới mọi hình thức.
Mục lục
1. Flutter
1.1. Ưu điểm
– Mạnh về animation, performance app rất cao.
– Giao tiếp gần như trực tiếp với native
– Static language nhưng với syntax hiện đại, compiler linh động giữa AOT (for archive, build prod) và JIT (for development, hot reload)
– Có thể chạy được giả lập mobile ngay trên web, tiện cho development. Các metric measure performance được hỗ trợ sẵn giúp developer kiểm soát tốt performance của app.
– Có thể dùng để build các bundle/framework gắn và app native để tăng performance.
1.2. Nhược điểm
– Bộ render UI được team author gần như viết lại, không liên quan tới UI có sẵn của Framework native, dẫn đến memory sử dụng khá nhiều.
– Phải học thêm ngôn ngữ DART, bloc pattern, DART Streaming
– Dù đã release 1.0 chính thức, tuy nhiên còn khá mới. Một số plugin rất quan trọng như Google Map vẫn còn đang phát triển, chưa stable.
– Là con cưng của Google, tuy nhiên hãng dính nhìu phốt với thói quen “quăng con giữa chợ” nên cần cân nhắc.
2. React Native
2.1. Ưu điểm
– Thiên về development/hotfix nhanh (hot reload, bundle injection)
– Sử dụng JS (quen thuộc với nhiều developer) và có thể share business logic codebase với frontend (js).
– Phát triển bởi Facebook, Facebook dùng cho sẩn phẩm của họ hàng ngày nên developer hưởng lợi khá nhiều từ đây.
– Hiện tại React Native đã có rất nhiều thư viện, gần như đã rất đầy đủ cho các nhu cầu app thông dụng.
2.2. Nhược điểm
– Giao tiếp với native thông qua các bridge, dễ bị bottleneck nếu không được kiểm soát tốt.
– Dùng JS nên mang theo các đặc điểm của JS: rất dễ làm nhưng cũng dễ sai, dẫn tới khó maintain về sau.
– HIệu năng animation là điểm yếu của React Native, muốn làm tốt phải làm từ native, tầng js chỉ call vào, setup views. Tuy nhiên với các interactive animation thì rất đau khổ.
– Không thích hợp cho các app cần năng lực tính toán cao (hash, crypto, etc).
3. Lời kết
Flutter phù hợp với các dự án focus về animation, các layout phức tạp, với thế mạnh sử dụng bộ render tự làm, giao tiếp trực tiếp với GPU và một SDK để viết anim dễ dàng. Cực kỳ phù hợp với các team native (đang có nhu cầu làm thêm các UX có hiệu năng cao vào app native có sẵn). Flutter Developer hiện tại chưa nhiều, sẽ khó tìm người hơn.
React Native phù hợp với các team dùng JS as main language, không có quá nhiều animation phức tạp. RN hiện tại tuyển người khá/rất dễ so với Flutter.
Về quan điểm cá nhân mình thiên về Flutter hơn, cũng tin tưởng vào khả năng phát triển của nó, dùng nó như một sự bổ trợ cho native. Tuy nhiên với sự phát triển của các cross platform hiện tại thì khả năng cao là chúng chỉ có 2 – 3 năm vòng đời, vì thế nếu đã chọn làm mobile thì nên nắm được native.
Không chỉ React Native với Flutter, ngay cả Xamarin chen chân vào cuộc chiến cũng khiến các dev cân nhắc lựa chọn. Vậy dùng Flutter, React Native hay Xamarin phù hợp với dự án, với công ty hay với con đường sự nghiệp của bạn? Không có tốt nhất, chỉ có sự phù hợp nhất mới đem lại hiệu quả.