React Native là gì?
React Native là một framework do Facebook phát triển hướng đến tối ưu hóa hiệu năng Hybrid và tối giản số lượng ngôn ngữ Native di động. Nền tảng xây dựng của React Native là gì?
React Native cho phép build ứng dụng Native đa nên tảng một cách dễ dàng, khác với Mobile Web App, HTML5 App và Hybrid App. Để thực sự hiểu rõ hơn, mời độc giả cùng tìm hiểu Native App và Hybrid App là gì nhé!
Native App là gì?
Native App là tên gọi dành cho những ứng dụng được xây dựng và phát triển bằng những công cụ do chính nhà phát triển cung cấp cho lập trình viên. Hiện nay, trên thế giới có hai nhà phát triển lớn tồn tại song song và cạnh tranh lẫn nhau đó là Android và iOs.
Native App được tạo ra bằng ngôn ngữ của hệ điều hành và các tính năng có sẵn trên hệ điều hành đó. Điều này cho phép các ứng dụng vận hành với tốc độ cao nhất mà không cần thông qua bất kì ứng dụng bên thứ ba hay engine nào.
Các ứng dụng Android có thể được viết bằng hai ngôn ngữ là Java và Kotlin. Trong khi đó, iOs app được viết bằng ngôn ngữ hướng đối tượng Swift, trước đây là Objective C. Công cụ hỗ trợ phát triển ứng dụng cho hệ điều hành Android và iOs có thể tham khảo là Android Studio và XCode.
Hybrid App là gì?
Hybrid App có thể được hiểu là “đứa con” giữa ứng dụng web và mobile (thiết bị di động). Đây là một loại ứng dụng vừa có khả năng cài đặt trên điện thoại giống như các Native App vừa có thể sử dụng trên nền tảng web mà không cần cài đặt trên máy.
Bên cạnh việc các ứng dụng Hybrid được xây dựng trên ngôn ngữ HTML, CSS và JS, thông thường, rất khó để phân biệt được Native App và Hybrid App. Dù vậy, Hybrid App có nhược điểm là hiệu năng sẽ bị giảm và không tương tác được hết các tài nguyên hệ thống phần mềm và phần cứng.
Cách hoạt động của React Native
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.
Ưu và nhược điểm của React Native là gì?
React Native có khá nhiều ưu điểm. Dù vậy nó cũng tồn tại một số nhược điểm. Hãy cùng Mắt Bão tìm hiểu chi tiết bên dưới đây!
Ưu điểm của React Native là gì?
- Tối ưu thời gian.
- Hiệu năng ổn định.
- Tiết kiệm chi phí.
- Đội ngũ phát triển ứng dụng không quá lớn.
- Ứng dụng tin cậy, ổn định.
- Xây dựng ứng dụng ít native code nhất cho nhiều hệ điều hành khác nhau.
- Trải nghiệm người dùng tốt hơn khi so sánh với ứng dụng Hybrid.
Nhược điểm của React Native là gì?
- Yêu cầu Native code.
- Hiệu năng kém hơn so với Native App.
- Bảo mật chưa thật sự tốt do dùng JS.
- Quản lý bộ nhớ.
- Tùy biến chưa thật sự tốt ở một số module.
Cách cài đặt React Native
React Native hỗ trợ đa hệ điều hành bao gồm Windows, Linux, MacOS. Dưới đây là hướng dẫn cài đặt React Native trên hệ điều hành Linux, sử dụng thuần code JS.
- Bước 1: Download NodeJS và cài đặt.
- Bước 2: Tiến hành cài đặt React Native App bằng cú pháp
npm install –g create-react-native-app
- Bước 3: Tạo và run project mẫu
create-react-native-app AwesomeProJect
cd AwesomeProject
npm start
- Bước 4: Chạy project trên điện thoại
Bất kỳ thay đổi nào được thực hiện trên App.js thì ứng dụng sẽ tự động cập nhật tương ứng. Đây là một trong những ưu điểm đã được liệt kê ở trên giúp các nhà phát triển tiết kiệm thời gian và tăng hiệu quả khi xây dựng ứng dụng.
Khác biệt giữa ReactJS và React Native là gì?
Hãy cùng tìm hiểu chi tiết về những sự khác biệt giữa ReactJS và React Native:
- Thiết lập và đóng gói (setup and bundling)
- DOM và Styling
- Animations và Gestures
- Điều hướng (Navigation)
- Nền tảng code riêng (Platform specific code)
Thiết lập và đóng gói (setup and bundling)
React Native là một framework, trong đó ReactJS đóng vai trò thư viện Javascript. React Native có sẵn tất cả những module cần thiết để xây dựng ứng dụng nhanh chóng. Trong khi đó, khi dùng ReactJS bạn cần phải xác định các module cần thiết cho ứng dụng của mình.
Ngoài ra, việc thiết lập và vận hành React Native cũng khá nhanh chóng. Bạn có thể mô phỏng trực tiếp ứng dụng trên nền tảng mong muốn hoặc trên chính thiết bị của bạn.
DOM và Styling
Lưu ý React Native không dùng HTML để render app mà cung cấp các component để thay thế. Component React Native sẽ map các UI iOS hoặc Android được render trên ứng dụng.
Vì vậy, các thư viện trước đây trong ReactJS sẽ không dùng được trong React Native để hiển thị HTML, SVG hay Canvas. Để tạo style cho các Component React Native, cần tạo các stylesheet bằng javascript.
Animations và Gestures
Để tạo các Component động trong React Native, bạn sẽ phải sử dụng javascript thay vì CSS animation. Bạn có thể tham khảo API animated do React Native cung cấp với những tính năng tạo các loại hình chuyển động khác nhau, hẹn giờ hay dựa trên vận tốc liên quan đến hành động và dùng được cho các loại Easing khác nhau.
LayoutAnimation được React Native cung cấp để hỗ trợ cho quá trình Transitions. Hay các tương tác với cử chỉ người dùng mà bạn có thể tham khảo PanResponder. Được áp dụng cho một View của Component để xử lý cảm ứng cho view bằng các sự kiện như onPanResponderGrant(touchstart), onPanResponderMove(touchmove), onPanResponderRelease(touchend)…
Điều hướng (Navigation)
Nếu so sánh với các ứng dụng web thì ứng dụng di động không có quá nhiều scene. Tuy nhiên, bất kì một ứng dụng nào cũng cần đến một cách để điều hướng giữa hai view và đó là lý do React Native mang đến Navigator.
Cung cấp tất cả những gì mà bạn cần để thực hiện việc chuyển đổi giữa các Scene trong ứng dụng. Mặc dù, các ứng dụng di động vừa và nhỏ hiện nay không có quá nhiều chuyển cảnh nhưng thực sự đây vẫn là một tính năng hữu ích, đặc biệt khi bạn muốn xây dựng các ứng dụng lớn.
Nền tảng code riêng (Platform specific code)
Công việc xây dựng và phát triển một ứng dụng cho nhiều nền tảng khác nhau luôn là bài toán khó. Gây hao tổn chi phí, thời gian, thậm chí tạo ra khó khăn cho những nhà phát triển.
Có hai cách phổ biến hiện nay mà bạn có thể sử dụng để phát triển ứng dụng cho từng nền tảng. Cách đơn giản nhất chính là sử dụng thiết kế tổng quát nhất để trên các nền tảng ứng dụng đều hiển thị cùng một giao diện.
Cách thứ hai là định nghĩa từng bộ mã cho mỗi nền tảng khác nhau. Tương ứng với từng nền tảng sẽ có các DOM, logic, animate… khác nhau. React Native có khả năng phát hiện và nạp đúng code cho nền tảng được hỗ trợ. Để giúp code của bạn được logic hơn, hãy đặt các component được xác định trong tệp tin index.js.
Công cụ phát triển React Native là gì?
React Native cung cấp một số công cụ phát triển miễn phí cho những nhà phát triển. Có thể kể đến như:
- Hot Reloading
- Chrome Dev Tools để kiểm tra yêu cầu mạng, hiển thị bản ghi giao diện và dừng mã trên các trình gỡ lỗi
- Redux DevTools để kiểm tra trạng thái của store Redux
Xuất bản
Để đưa một ứng dụng lên Google Play hoặc Appstore, bạn cần tìm hiểu về hai công cụ là Android Studio và XCode. Đây là hai phần mềm hỗ trợ phát triển ứng dụng trên hai hệ điều hành phổ biến nhất hiện nay là Android và iOs.
Trên đây là những thông tin được tổng hợp chi tiết về React Native. Hy vọng rằng những thông tin trong bài viết này sẽ hữu ích, đặc biệt, đối với các bạn đọc muốn tìm hiểu và có định hướng trở thành những nhà phát triển phần mềm hay lập trình viên trong tương lai.
Nguồn: wiki.matbao.net