![]()
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 Native và Expo 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.

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ó:

- Facebook & Instagram
- Discord
- 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:
- Cài đặt Node.js và JDK.
- 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.
- 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.
- Đố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?

- 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 đầu | Rất khó, nhiều lỗi vặt | Cực kỳ dễ, quét QR là chạy |
| Môi trường phát triển | Cần Android Studio & Xcode | Chỉ cần Node.js và một chiếc điện thoại |
| Yêu cầu máy tính Mac | Bắ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 Native | Có sẵn Expo SDK, cài đặt chỉ với 1 dòng lệnh |
| Phù hợp cho | Dự án có sẵn code Native (Java/Swift) từ trước | 99% các dự án làm mới, từ người học đến doanh nghiệp |

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!