React Native là gì? Nó sinh ra giải quyết được bài toán nào?

React Native là gì? Nó sinh ra giải quyết được bài toán nào? 

React Native là một framework do công ty công nghệ nổi tiếng Facebook phát triển nhằm mục đích giải quyết bài toán hiệu năng của Hybrid và bài toán chi phí khi mà phải viết nhiều loại ngôn ngữ native cho từng nền tảng di động.

Nó sinh ra giải quyết bài toán nào?

Bằng cách tích hợp 2 thread là Main Thread và JS Thread cho ứng dụng mobile. Với Main Thread sẽ đảm nhận vai trò cập nhật giao diện người dùng(UI). Sau đó sẽ xử lý tương tác người dùng. Trong khi đó, JS Thread sẽ thực thi và xử lý code Javascript. Hai luồng này hoạt động độc lập với nhau.

Để tương tác được với nhau hai Thread sẽ sử dụng một Bridge(cầu nối). Cho phép chúng giao tiếp mà không phụ thuộc lẫn nhau, chuyển đổi dữ liệu từ thread này sang thread khác. Dữ liệu từ hai Thread được vận hành khi tiếp nối dữ liệu cho nhau.

Chúng ta sẽ build được ứng dụng Native, và chúng ta cũng có thể build ứng dụng đó một cách đa nền tảng (multi-platform) chứ không phải là một “mobile web app”, không phải là “HTML5 app”, và cũng không phải là một “hybrid app” hay cũng không chỉ build trên iOS hay Android mà chúng ta build và chạy được cả hai hệ sinh thái luôn, sợ chưa!!!

Một điểm hay ho nữa mà mình có đề cập là giảm chi phí recompile của Native bằng cách sử dụng Hot-Loading tức là bạn không cần phải build lại ứng dụng từ đầu nên việc chỉnh sửa diễn ra rất nhanh chóng. Giúp cho lập trình viên có thể thấy được những chỉnh sửa của họ một cách nhanh chóng trực quan, không còn phải bỏ quá nhiều thời gian trong việc build và run ứng dụng nữa.

Và điểm lợi hại kế tiếp của React Native đó chính là chúng ta chỉ cần sử dụng JS để phát triển được một ứng dụng di động hoàn chỉnh, đồng thời giải quyết được các vấn đề mà Native App gặp phải mà mình đã nêu ở trên. Và rồi còn cả kết hợp với code native như Swift, Java, v.v…

Ưu điểm nổi bật:

  • Các thao tác của ứng dụng native như chuyển trang, điều hướng, cuộn trang đều rất mượt.
  •  Hiệu quả về mặt thời gian khi mà bạn muốn phát triển một ứng dụng nhanh chóng.
  •  Hiệu năng tương đối ổn định.
  • Cộng đồng phát triển mạnh.
  • Tiết kiệm tiền.
  • Ứng dụng tin cậy và ổn định.
  •  Xây dựng cho nhiều hệ điều hành khác nhau với ít native code nhất.
  • Trải nghiệm người dùng tốt hơn là hybrid app.
  •  Giúp cho lập trình viên web có thể viết ứng dụng native để khắc phục các điểm yếu của ứng dụng web và hybrid.

1. Hot reloading, Live reload: Với bản thân đã code native application bằng Android, mỗi lần mình thay đổi 1 xíu kiểu như một cái chuỗi để hiển thị, thình mình phải ngồi chờ nó rebuild lại project rồi mới run application trên device nó rất là mất nhiều thời gian.

Sau khi mình thử code với React Native, phải nói là giai đoạn build app khá nhanh và nếu mình có thay đổi gì, mình chỉ cần Edit và Save lại, thì lập tức nó reload lại project rất nhanh, cứ như bạn F5 lại 1 trang web với mạng siêu nhanh :v, cái đó là tính năng của Hot reloading nhé.

Còn live reload nó sẽ load lại tất cả các file của Project. Thì đôi lúc Hot reloading nó tiện trong lúc handle với UI design, còn thay đổi logic đôi lúc nó lại không cập nhật được (cái này cũng hiếm khi) thì Live reload là giải pháp đó, live reload cũng rất nhanh. Hot reloading thì nó chỉ load lại cái file có sự thay đổi, còn live reload thì nó sẽ load lại toàn bộ các file trong Project. Nên chúng ta sẽ cân nhắc trước khi sử dụng 2 cái đó

2. Native application: có lẽ bạn cũng nghe thoáng thoáng đâu đó giữa Hybrid App và Native App.

Thì Hybrid App là ứng dụng kết hợp những ưu điểm của cả Mobile Web App và Native App. Theo đó, các phần cơ bản của ứng dụng vẫn viết bằng ngôn ngữ web, nhưng được đặt trong native container.

Còn Native app là những ứng dụng được viết riêng cho một loại nền tảng như iOS, Android, Windows Phone bằng các ngôn ngữ tương ứng của mỗi nền tảng đó ví dụ Java trên Android, Object C trên iOS, C# trên winphone. Mỗi Native App chỉ chạy được trên một nền tảng và không thể mang sang các nền tảng khác.

Không giống những framework khác như Cordova cái mà thường chỉ là một Webview (giống kiểu bật cái ứng dụng điện thoại lên thật chất là bạn đang lướt web mà không có cái thanh địa chỉ trên trình duyệt, tạo ảo giác như đang xài application). React Native được sử dụng để xây dựng một ứng dụng Native thật sự. Những Webview không thể cung cấp trải nghiệm chân thật cho người dùng – điều mà chỉ React Native có thể làm được.

Với React Native, những component cơ bản(View, Image, Button, Checkbox) đều là những component native. Do đó ứng dụng sẽ mang một trải nghiệm liền mạch với từng hệ điều hành. Điều đó thực sự làm lên một khác biệt lớn so với các framework lập trình cross-platform khác.

Nó thực sự ấn tượng hơn nữa khi bạn lại code bằng ngôn ngữ javascript và render ra các component native từ OS.

Mình lấy một ví dụ đơn giản: Đó chính là DatePicker widget. Bạn sẽ thấy ứng dụng của bạn với widget này sẽ hiển thị khác nhau trên Android và IOS.

Đây chính là một đặc điểm tạo nên sự khác biệt: Không chỉ là tốc độ vì nó gần native nhất, mà nó còn làm cho cuộc sống của lập trình viên trở nên dễ dàng hơn. Họ không cần phải code lại một logic cho các nền tảng khác nhau mà vẫn có ứng dụng native cho từng nền tảng đó.

Nếu nó đã build được như 1 native application thì hiệu năng nó sẽ rất là tốt.

3. Tiết kiệm nhân lực và thời gian:

Chúng ta có thể hiểu nó qua 1 case sau: Khách hàng deal với sếp của bạn rằng tui muốn sản phẩm tui chạy được trên cả Android và IOS, và chi phí rẻ cho tui, với nhanh lên giùm tui, tui muốn sản phẩm tui hoàn thành càng sớm càng tốt (Client ăn gì khôn thế không biết :v), và sếp transfer lại cho bạn (và bản thân sếp cũng không muốn tốn quá nhiều nhân công đầu tư 1 một dự án như vậy, nếu phải tuyển thêm dev cho team Android và cả team IOS nữa, chi phí bỏ ra khá nhiều) thì Leader mình sau khi xem xét các yêu cầu và thời gian của dự án thì Leader mình không chần chừ mà đưa ra giải pháp ngay đó là chọn React Native để implement cái sản phẩm đó và chi phí chỉ bằng ½ chỉ cần tuyển dev biết code React Native thậm chí là ReactJS hoặc dev vững core về JS, hay native application cũng có thể Join team để tham gia dự án. Lúc đó mình chỉ biết về native application đôi chút, hoàn toàn không biết gì về JS hay là react native. Thế mà mình tiếp cận nó khá nhanh. Quả thật nhanh hơn so với thời gian mình tiếp cận native app. Và điều đó khiến mình khá thích ở React Naive này.

 

4. Viết 1 được nhiều: như lời chia sẻ trên có lẽ bạn cũng thấy bạn hoàn toàn thấy. Code dự án bằng React Native đều có thể build trên Android và IOS một cách nhanh chóng và dễ dàng.

5. Cộng đồng khá lớn: bạn có thể check ở đây cả trăm thư viện https://github.com/jondot/awesome-react-native

Thứ 2 nó được sự hậu thuẫn của facebook, và với một cộng đồng khá lớn cùng chung tay phát triển thì tương lai nó sẽ còn lớn mạnh hơn nữa.

6. Kiến thức nền để tiếp cận: Nó không đòi hỏi bạn phải thật giỏi hay quá cao siêu mới có thể tiếp cận được nó. Thứ nhật bạn chỉ cần biết những cái căn bản như XML, HTML, CSS hay chỉ cần biết javascript hoặc Java core, hoặc cho dù bạn có là Web developer hay mobile developer thuần cũng đã có thể học tốt React native rồi.

React Native đang thực sự là một cơn sốt với gần 85k sao và 19k fork trên github. Đó là một số rất ấn tượng. 

Nguồn: tổng hợp từ một số blog trên mạng như http://vicoders.com/, nordiccoder.com

Tags:

Đọc nhiều tuần qua: