0
Blog

So sánh Flutter với React Native ai ngon hơn?

20/07/2020

Trong bài viết này, bạn sẽ biết thông tin chi tiết về React NativeFlutter, bên cạnh đó sẽ là bài so sánh nhanh giữa hai nền tảng này với nhau. FlutterReact 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 ngồi lại so sánh giữa Flutter và React Native ai ngon hơn ai, ưu điểm và nhược điểm của cả hai công nghệ này.

Khi ngày càng có nhiều người tiếp cận với các công nghệ hiện đại, nhu cầu về các ứng dụng di động đã tăng lên ở mức độ lớn. Để phù hợp với nhu cầu ngày càng tăng của khách hàng và doanh nghiệp, việc liên tục phát triển các công nghệ, nền tảng mới là điều rất cần thiết. Để phát triển một ứng dụng di động mới cho các nhà phát triển phân khúc kinh doanh mới cần có công nghệ mạnh mẽ giúp giảm thời gian mà vẫn phải đạt được hiệu quả. Để đạt được điều này, nhiều nhà phát triển đã bắt đầu sử dụng ứng dụng đa nền tảng, để họ có thể tận dụng các tính năng của nó để thiết kế các ứng dụng thương mại điện tử, ứng dụng tương tác và ứng dụng xã hội. Flutter và React Native là hai framework chính đang cạnh tranh để chứng minh giá trị của chúng và chúng là chính là những người chủ định hình tương lai phát triển của các ứng dụng di động cross-platform. React Native vs Flutter là hai nền tảng phổ biến nhất trong năm 2018 và 2019.

Cross Platform Mobile, build native cho cả Android và iOS đang là xu hướng

Cross Platform Mobile, build native cho cả Android và iOS đang là xu hướng

 

Những điểm đáng chú ý của Flutter

Flutter là SDK nguồn mở của Google dùng để tạo các ứng dụng chất lượng cao cho Android và iOS bằng cách sử dụng một codebase. Ngày 4 tháng 12 năm 2018, Google đã tổ chức sự kiện Flutter Live để chào mừng SDK mobile mới, Flutter và phiên bản ổn định đầu tiên của nó. Họ cũng công bố project Google Hummingbird cho phép các developer chỉ cần build một ứng dụng một lần và sau đó có thể chạy nó ở bất kỳ nơi nào.
Flutter được Google giới thiệu là một người mới trong thế giới ứng dụng di động. Không có gì ngạc nhiên khi Flutter giúp các nhà phát triển tạo ra các ứng dụng native đẹp mắt và giúp họ phát triển các ứng dụng đa nền tảng một cách dễ dàng.

Flutter, một "tay chơi" mới trong thời giới Mobile development

Flutter, một “tay chơi” mới trong thời giới Mobile development

Những điểm đáng chú ý của React Native

Facebook đã giới thiệu React Native và trong thời gian ngắn, framework này đã trở nên phổ biến và các công ty sử dụng nó đã được hưởng lợi rất nhiều. React Native được biết đến như là Future of Hybrid Apps. Thông qua Google Trend, các bạn cũng thấy rằng cả 2 nền tảng đều đang rất hot. React Native với tốc độ phát triển phi mã trong thời gian gần đây. Vậy Flutter hay React Native là lựa chọn của xu hướng? Mặc dù Flutter không phát triển nóng nhưng độ phổ biến cũng không hề kém cạnh React Native. Về khía cạnh này thì React Native hoàn toàn áp đảo Flutter. Khi có số lượng sao đánh giá tới hơn 70000 lượt. Cao gần gấp đôi Flutter. Điều này thể hiện rằng, số lượng cộng đồng lập trình viên vẫn đánh giá React native cao hơn Flutter. Và mình tin chắc là khi các bạn học và làm việc với React Native thì sẽ được cộng đồng hỗ trợ tốt hơn, nhiều thư viện hơn.

Bảng so sánh trend của Google giữa React Native và Flutter.

Bảng so sánh trend của Google giữa React Native và Flutter.

Chúng ta ở đây để so sánh hiệu suất của Flutter và React Native, được thực hiện dựa trên các thông số khác nhau. Biểu đồ so sánh này sẽ cung cấp một cách hữu dụng tới các Start-up, để họ có thể dễ dàng lựa chọn framework tốt nhân để sử dụng trong việc phát triển ứng dụng mobile của họ.

FlutterReact Native
Khả năng dùng lại codeFlutter cho phép overwriting code. Nếu bạn có kế hoạch cho việc sử dụng lại code thì Flutter là tùy chọn tốt nhất để có thể tối ưu được việc lựa sử dụng lại code.React Native cho phép bạn sử dụng lại code, nhưng điều này lại bị giới hạn trong một vài components cơ bản. Để có thể định nghĩa các style cho nền tảng React Native sẽ mất khá nhiều thời gian
Các thư viện Third PartyCó nhiều các third-party packages đang được sử dụng và đang ngày càng được phát triển, và chúng thực sự rất hữu dụngTừ khi React Native trở lên phổ biến, đã có rất nhiều các third-party packages được phát triển và được sử dụng rất nhiều trong ứng dụng, chúng có thể được thêm bớt một cách linh động trong ứng dụng của bạn
Độ phổ biếnVới khoảng 30k Github stars, Flutter đã trở thành trends trong việc phát triển. Như Google đã giới thiệu về framework này. Nó chắc chắn muốn trở thành một nền tảng phổ biến trong sự lựa chọn của các developerVới 65k Github stars, React Native có lượng developer sử dụng đang nhiều hơn bởi vì lượng developer sử dụng JavaScript rất dễ dàng để sử dụng với các thư viện của React
Cộng đồngTừ khi Flutter mới được giới thiệu, đã có một lượng lớn các bài viết hướng dẫn được đưa lên online, trong đó có rất nhiều các tài nguyên hữu ích để có thể bắt đầu viết ứng dụng đầu tiên trên mobile appReact Native đã được phổ biến từ lâu, vì thế cho nên nó cũng có rất nhiều các cộng đồng để hỗ trợ online. Những kỹ năng của các lập trình viên có kinh nghiệm trong JavaScript chắc chắn sẽ đưa ra giải pháp cho bất kỳ vấn đề nào trong quá trình phát triển của bạn

Flutter vs. React Native: Khám phá sự khác biệt

 

Ưu nhược điểm của Flutter và react native

Ưu nhược điểm của Flutter và react native

Flutter:

Ư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.

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.

React Native:

Ư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).
– Back bởi Facebook, họ dùng cho product của họ hàng ngày nên developer hưởng lợi khá nhiều từ đây.
– Hiện tại đã rất nhiều thư viện, gần như đã rất đầy đủ cho các nhu cầu app thông dụng.

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 RN, 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).

Tóm lại:
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). Chọn Flutter nếu bạn muốn cross-platform, UI hấp dẫn, native performance tuyệt vời, time-to-market nhanh hơn và tận dụng lợi thế cạnh tranh của Dart trong môi trường lập trình của bạ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. React Native hiện tại tuyển người khá/rất dễ so với Flutter. Chọn React Native nếu bạn muốn tận dụng sự hỗ trợ từ cộng đồng mạnh mẽ và trưởng thành hơn, native app performance và sự phổ biến của JavaScript trong việc phát triển các cross-platform app.

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. Còn nếu bạn mong muốn học 1 khoá học đầy đủ về Flutter thì bạn có thể tìm hiểu khoá học Flutter cơ bản do anh Nguyễn Vũ Trọng – Senior Engineering Manager của Begroup giảng dạy.