Command Palette

Search for a command to run...

React Native là gì? Tại sao nên dùng nó để lập trình Mobile?

React Native là gì? Tại sao nên dùng nó để lập trình Mobile?

Bạn đang có một ý tưởng tuyệt vời cho một ứng dụng di động. Bạn muốn ứng dụng của mình xuất hiện trên cả iPhone (iOS) và các dòng máy Samsung, Oppo, Xiaomi,.. (Android). Nhưng khi bắt đầu tìm hiểu, bạn nhận ra một sự thật phũ phàng:

Để làm được điều đó theo cách truyền thống, bạn phải học Swift/Objective-C cho iOS và Kotlin/Java cho Android. Việc phải học hai ngôn ngữ lập trình, làm việc trên hai môi trường khác nhau và duy trì hai hệ thống mã nguồn (source code) riêng biệt là một cơn ác mộng về cả thời gian lẫn chi phí.

Đó chính là lúc React NativeExpo xuất hiện như những vị cứu tinh. Chào mừng bạn đến với bài viết đầu tiên trong series chinh phục lập trình Mobile!

1. React Native là gì và tại sao nó "thống trị"?

React Native là một framework mã nguồn mở do Facebook (Meta) tạo ra. Nó cho phép bạn xây dựng các ứng dụng di động thực thụ cho cả iOS và Android chỉ bằng JavaScript và thư viện React.

React Native là một framework mã nguồn mở do Facebook (Meta) tạo ra

Triết lý cốt lõi của React Native không phải là "Viết một lần, chạy mọi nơi" (Write once, run anywhere), mà là:

"Học một lần, viết mọi nơi" (Learn once, write anywhere).

Ứng dụng React Native hoạt động như thế nào?

Không giống như các công cụ tạo ứng dụng web hybrid như Cordova hay Ionic - nơi ứng dụng của bạn thực chất chỉ là một trang web được nhúng vào một trình duyệt thu nhỏ, React Native render ra các thành phần giao diện Native thực sự của hệ điều hành.

Khi bạn viết mã bằng JavaScript, React Native sẽ sử dụng một cơ chế (trước đây gọi là Bridge, hiện nay đang được nâng cấp lên kiến trúc mới JSI) để giao tiếp với hệ điều hành. Khi bạn viết thẻ <Text> trong code, React Native sẽ tự động dịch nó thành UITextView trên iOS và TextView trên Android.

Kết quả: Ứng dụng của bạn có giao diện và hiệu năng gần như tương đương với các ứng dụng được viết bằng ngôn ngữ bản địa (Native).

Ai đang sử dụng React Native?

Nếu bạn đang tự hỏi liệu React Native có đủ mạnh cho các dự án thực tế hay không, thì hãy nhìn vào danh sách các "ông lớn" đang sử dụng nó:

Những công ty lớn đang sử dụng React Native

  • Facebook & Instagram
  • Discord
  • Pinterest
  • Skype
  • Uber Eats

2. Nỗi "ám ảnh" mang tên React Native CLI

Dù React Native rất tuyệt vời, nhưng nếu bạn khởi tạo dự án bằng cách truyền thống (gọi là React Native CLI), bạn sẽ nhanh chóng vấp phải một rào cản lớn: Cài đặt môi trường.

Để chạy được một dòng chữ "Hello World" lên màn hình điện thoại bằng React Native CLI, bạn phải:

  1. Cài đặt Node.js và JDK.
  2. Tải và cấu hình Android Studio (nặng hàng chục GB), thiết lập các biến môi trường rắc rối.
  3. Nếu muốn làm app cho iOS, bạn bắt buộc phải có một chiếc máy tính Mac, cài đặt Xcode và CocoaPods.
  4. Đối mặt với những lỗi "đỏ lòm" màn hình ngay từ lúc build ứng dụng lần đầu tiên.

Chính sự phức tạp này đã làm nản lòng rất nhiều người mới bắt đầu. Và đó là lý do Expo ra đời.

3. Expo lên ngôi: "Phép màu" giải cứu lập trình viên

Expo là một framework và nền tảng được xây dựng xoay quanh React Native. Nếu React Native là động cơ xe, thì Expo chính là chiếc xe đã được lắp ráp hoàn chỉnh, đổ đầy xăng, có sẵn điều hòa và hệ thống định vị - bạn chỉ việc ngồi lên và lái.

Tại sao nên chọn Expo?

Tại sao nên chọn Expo?

  • Code ngay lập tức, không cần cài đặt phức tạp: Với ứng dụng Expo Go tải từ App Store hoặc Google Play, bạn có thể chạy thẳng ứng dụng đang code trên máy tính lên điện thoại thật của mình chỉ bằng cách quét mã QR. Không cần cấu hình Android Studio hay Xcode!
  • Không có máy Mac vẫn làm được app iOS: Nhờ hệ thống build trên đám mây của Expo (EAS Build), bạn có thể dùng máy tính Windows để viết code và nhờ server của Expo đóng gói thành ứng dụng iOS.
  • Hệ sinh thái thư viện (SDK) khổng lồ: Bạn cần dùng Camera? Bản đồ? Định vị GPS? Quét mã vạch? Hay thông báo đẩy (Push Notification)? Expo có sẵn tất cả trong SDK của họ, được tối ưu hóa cực tốt và cực kỳ dễ cài đặt.
  • Cập nhật ứng dụng không cần qua Store (OTA Updates): Bạn phát hiện ra một lỗi nhỏ tả (typo) hoặc một bug khẩn cấp khi app đã lên App Store? Với Expo, bạn có thể đẩy bản cập nhật sửa lỗi trực tiếp xuống điện thoại của người dùng trong vài giây mà không cần chờ Apple hay Google xét duyệt lại.

4. So sánh nhanh: React Native CLI vs Expo

Để bạn có cái nhìn tổng quan nhất, hãy xem bảng so sánh dưới đây:

Tiêu chíReact Native (CLI)Expo
Độ khó thiết lập ban đầuRất khó, nhiều lỗi vặtCực kỳ dễ, quét QR là chạy
Môi trường phát triểnCần Android Studio & XcodeChỉ cần Node.js và một chiếc điện thoại
Yêu cầu máy tính MacBắt buộc (nếu muốn build iOS)Không bắt buộc (nhờ EAS Build)
Tích hợp tính năng thiết bịPhải tự tìm thư viện, tự cấu hình NativeCó sẵn Expo SDK, cài đặt chỉ với 1 dòng lệnh
Phù hợp choDự án có sẵn code Native (Java/Swift) từ trước99% các dự án làm mới, từ người học đến doanh nghiệp

React Native CLI vs Expo

Hiện nay, ngay cả tài liệu chính thức của React Native cũng đã khuyến nghị lập trình viên nên bắt đầu dự án mới bằng Expo.

Kết luận: React Native là công cụ mạnh mẽ

React Native là công cụ mạnh mẽ để bạn viết code một lần và chạy trên cả iOS lẫn Android. Còn Expo là "vũ khí tối thượng" giúp bạn loại bỏ mọi rào cản kỹ thuật phức tạp, tập trung 100% vào việc sáng tạo giao diện và logic cho ứng dụng.

Trong bài viết này, chúng ta đã nắm được bức tranh tổng quan. Ở bài tiếp theo, chúng ta sẽ chính thức bắt tay vào việc cài đặt các công cụ cần thiết và viết những dòng code đầu tiên. Hãy chuẩn bị sẵn sàng chiếc smartphone của bạn, vì điều kỳ diệu sắp bắt đầu!

Bài viết liên quan

Ôn tập React Hooks: Cách hoạt động của chúng trong môi trường Mobile

Chưa hiểu rõ luồng dữ liệu trong React Native? Bài viết này sẽ giải thích cặn kẽ cách sử dụng useState, useEffect và useRef qua các ví dụ thực tế dễ hiểu nhất.

Phân tích luồng chạy ứng dụng Expo chi tiết từ A-Z

Tìm hiểu cách ứng dụng khởi chạy, làm chủ thư mục app/, cấu trúc file cơ bản và phân tích cú pháp JSX một cách cực kỳ dễ hiểu.

Hướng dẫn cài đặt môi trường React Native & Expo trong 15 phút

Bạn sợ cài đặt môi trường lập trình mobile phức tạp? Hướng dẫn chi tiết cách dùng Expo Go, Node.js để chạy app React Native ngay lập tức.

Tìm hiểu 5 Core Components quan trọng nhất trong React Native

Hướng dẫn cách sử dụng các Core Components trong React Native. Nắm vững View, Text, Image, TextInput và ScrollView để xây dựng mọi giao diện mobile.