Quay lại các so sánh
UI đa nền tảng

Perry vs React Native

React Native cho phép bạn viết JavaScript/TypeScript điều khiển UI gốc trên iOS và Android — các thành phần UI ánh xạ đến widget nền tảng qua một bridge JS-to-native (hoặc, trong New Architecture, một lớp JSI / Fabric với cùng hình dạng khái niệm). Perry đi theo một cách tiếp cận khác: TypeScript được biên dịch ahead-of-time thành mã máy gốc, và UI gốc là một phần của binary đã biên dịch, không phải bridge tại runtime.

React Native là gì?

React Native là framework của Meta để xây dựng ứng dụng di động bằng React. JavaScript chạy trong một engine nhúng — Hermes mặc định, hoặc JavaScriptCore — và tương tác với widget iOS/Android gốc qua một bridge (legacy) hoặc JSI/Fabric (New Architecture). Framework này ưu tiên di động (iOS và Android); Microsoft duy trì các fork cộng đồng cho Windows và macOS. React Native đã hỗ trợ ứng dụng tại Meta, Microsoft, Shopify, Discord và nhiều nơi khác.

Perry là gì?

Perry biên dịch TypeScript trực tiếp thành mã máy gốc. Module perry/ui của nó là một hệ thống UI khai báo kiểu SwiftUI biên dịch thành widget nền tảng gốc tại thời điểm build — không có runtime JS trong binary, không có bridge và không có JSI. Cùng một mã nguồn TypeScript biên dịch đến macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, Wear OS, WebAssembly và Web.

So sánh song song

Tính năngPerryReact Native
Mô hình thực thiMã máy gốc biên dịch AOTEngine JS (Hermes/JSC) + bridge gốc (hoặc JSI/Fabric)
Engine JS trong ứng dụngKhông cóHermes (mặc định) hoặc JavaScriptCore
UIWidget gốc — API khai báo kiểu SwiftUIWidget gốc qua React + bridge / Fabric
Mục tiêu chínhmacOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, WASM, WebiOS, Android (Windows/macOS qua fork cộng đồng)
Binary server / CLI / desktopCó (công cụ CLI, máy chủ, ứng dụng desktop)Không (framework UI di động)
Bridge giữa JS và gốcKhông có bridge — mã gốc chính là chương trìnhCó (bridge legacy hoặc JSI/Fabric)
Hot reload trong phát triểnperry dev (tự động biên dịch lại watch-mode)Fast Refresh (rất nhanh)
Độ trưởng thànhTrước 1.0Ổn định, được triển khai rộng rãi trong sản xuất
Thư viện thành phầnwidget cốt lõi perry/ui + lớp tương thích React perry-reactRất rộng — React Native + các gói cộng đồng

Perry thắng ở đâu

  • +Không có engine JS trong ứng dụng được phát hành. Binary Perry biên dịch không mang theo Hermes hay JSC; TypeScript chính là tệp thực thi.
  • +Không có chi phí bridge / JSI. Các lệnh gọi UI gốc là lệnh gọi hàm biên dịch trực tiếp, không phải marshaling JS-to-native.
  • +Độ phủ nền tảng rộng hơn. Một mã nguồn Perry biên dịch sang desktop (macOS/Linux/Windows), di động (iOS/iPadOS/Android), thiết bị đeo (watchOS/Wear OS), TV (tvOS), WASM và Web. React Native ưu tiên di động.
  • +Binary phía server và CLI từ cùng một trình biên dịch — Perry cũng là một runtime máy chủ, không chỉ là framework UI.
  • +Hiệu năng tính toán biên dịch AOT — không có warmup, không có JIT, không có round trip qua bridge.
  • +perry-react cho bạn React/JSX biên dịch thành widget gốc, vì vậy mô hình tư duy React có sẵn mà không cần engine JS trong binary.

React Native thắng ở đâu

  • +Hệ sinh thái trưởng thành, được thử thách trong trận chiến với cộng đồng, thư viện và công cụ hỗ trợ khổng lồ.
  • +Fast Refresh trong phát triển là tốt nhất trong lớp — thay đổi mã xuất hiện trong mili giây mà không cần build lại.
  • +Nguồn nhân lực khổng lồ. Tuyển dụng nhà phát triển React Native dễ dàng; Perry còn mới.
  • +Pipeline CI/CD, xuất bản App Store / Play Store và cập nhật OTA kiểu codepush đã được thiết lập.
  • +JSI/Fabric và New Architecture đã thu hẹp phần lớn khoảng cách hiệu năng lịch sử với gốc, đồng thời bảo toàn mô hình lập trình React.
  • +Hỗ trợ trực tiếp từ Meta và các đơn vị áp dụng lớn (Microsoft, Shopify, Amazon) giữ cho framework tiếp tục tiến lên.

Khi nào nên chọn Perry

Chọn Perry nếu bạn muốn một mã nguồn TypeScript duy nhất qua di động, desktop, watch, TV, WASM và web; nếu bạn không muốn có runtime JS trong ứng dụng được phát hành; nếu bạn muốn UI gốc không có bridge; hoặc nếu bạn đã đầu tư vào TypeScript và muốn biên dịch gốc thay vì một engine JS.

Khi nào nên chọn React Native

Chọn React Native nếu bạn xây dựng ứng dụng di động và muốn framework UI gốc đa nền tảng trưởng thành nhất, bạn có một đội React hiện có, bạn phụ thuộc vào hệ sinh thái thư viện React Native, hoặc bạn cần stack đa nền tảng di động tiêu chuẩn ngành ngày nay.

Kết luận

React Native là một framework ưu tiên di động với runtime JS và một bridge (hiện đã được cải thiện). Perry là một trình biên dịch tạo ra binary gốc từ TypeScript, với UI gốc là một phần của đầu ra biên dịch. Nếu bạn muốn React trên di động với hệ sinh thái sâu nhất, React Native là câu trả lời ngày nay. Nếu bạn muốn một mã nguồn TypeScript duy nhất biên dịch đến di động + desktop + watch + TV mà không có runtime JS trong ứng dụng, Perry là câu trả lời.

Thử Perry

Biên dịch TypeScript của bạn thành mã gốc ngay hôm nay.

Bắt đầu