Từ trang web hội chợ triển lãm
Expo cho phép các nhà phát triển web xây dựng các ứng dụng gốc thực sự hoạt động trên cả iOS và Android bằng cách viết chúng một lần chỉ bằng JavaScript.
Đây không phải là những gì React Native làm? Có gì khác biệt?
Từ trang web hội chợ triển lãm
Expo cho phép các nhà phát triển web xây dựng các ứng dụng gốc thực sự hoạt động trên cả iOS và Android bằng cách viết chúng một lần chỉ bằng JavaScript.
Đây không phải là những gì React Native làm? Có gì khác biệt?
Câu trả lời:
Tôi làm việc tại hội chợ triển lãm!
Khi bạn viết mã trong Expo
bạn viết React Native
mã. Expo
có hai phần chính:
1) expo-cli
: một công cụ dành cho nhà phát triển để tạo dự án, xem nhật ký, mở trên thiết bị của bạn, xuất bản, v.v.
2) Ứng Expo
dụng khách: một ứng dụng trên điện thoại cho phép bạn mở các dự án của mình trong khi bạn đang làm việc với chúng mà không cần phải thông qua XCode
hoặc Android Studio
cũng cho phép người khác xem chúng! Và nếu bạn xuất bản nó thông qua expo-cli
, mọi người có thể truy cập nó bất cứ lúc nào thông qua Expo
ứng dụng khách trên Android hoặc trên iOS nếu đăng nhập vào cùng một tài khoản mà nó đã được xuất bản. Cuối cùng, chúng tôi cũng cho phép xây dựng các ứng dụng độc lập để mọi người không phải sử dụng ứng dụng Expo
khách để mở ứng dụng đó và bạn có thể phân phối đến cửa hàng ứng dụng và cửa hàng chơi nếu bạn muốn.
Vì vậy, Expo
là một bộ công cụ được xây dựng trên / xung quanh React Native
. Các công cụ này phụ thuộc vào một niềm tin chính mà chúng tôi nắm giữ Expo
: có thể xây dựng hầu hết các ứng dụng mà không cần phải viết mã gốc, miễn là bạn có một bộ API toàn diện được tiếp xúc Javascript
.
Điều này rất quan trọng vì với React Native
bạn luôn có thể thả xuống mã gốc. Điều này đôi khi cực kỳ hữu ích nhưng phải trả giá: bạn cần gửi cho mọi người nhị phân của mình nếu bạn muốn họ kiểm tra họ, một người ở bên kia thế giới không thể chỉ cần nhấn vào một liên kết để mở nó trong khi bạn đang làm việc trên đó và bạn không thể chỉ xuất bản nó bằng một cú nhấp chuột để ai đó truy cập nó tương tự như cách bạn làm trong trình duyệt.
Với Expo
, chúng tôi khuyên bạn nên cố gắng tránh thả xuống mã gốc, nếu bạn có thể. Như tôi đã đề cập ở trên, chúng tôi nghĩ rằng với một bộ API toàn diện có sẵn Javascript
, điều này không cần thiết cho hầu hết các ứng dụng. Vì vậy, chúng tôi mong muốn cung cấp bộ API toàn diện này và sau đó xây dựng tất cả các công cụ tuyệt vời có thể tồn tại trong một thế giới nơi thời gian chạy riêng được chia sẻ.
Tuy nhiên, nếu bạn phải thấy rằng bạn hoàn toàn thả xuống bản địa, bạn có thể sử dụng ExpoKit
để tiếp tục sử dụng API gốc Expo
mang lại cho bạn trong khi có cùng mức độ kiểm soát như trong bất kỳ dự án gốc nào. " ExpoKit
là một thư viện Java và Objective-C cho phép bạn sử dụng Expo
nền tảng và Expo
dự án hiện tại của bạn như là một phần của dự án gốc tiêu chuẩn lớn hơn." Đọc thêm tại đây.
Tôi đã cố gắng làm một bản tóm tắt các tài liệu và câu trả lời từ các nhân viên của Expo:
Phản ứng init init:
Ưu điểm :
Nhược điểm :
Hội chợ triển lãm
Ưu điểm :
Nhược điểm :
Tôi hy vọng tôi có thể tổng hợp những điểm quan trọng nhất. Xin vui lòng thêm điểm bổ sung.
Nguồn: https://code.tutsplus.com/tutorials/detaching-expo-apps-to-Exokit-con accept--cms-30661 https://github.com/react-community/create-react-native-app/ các vấn đề / 516 #suecomment-373629114 https://docs.expo.io/versions/latest/guides/detach.html (tài liệu chính thức nói chung)
Câu trả lời của Brent Vatne là tốt nhưng tôi muốn thêm một số chi tiết.
React Native không cung cấp cho bạn tất cả các API JS bạn cần, nhưng chỉ có các tính năng nguyên thủy nhất. Các nhà phát triển React Native dự kiến sẽ sử dụng Android Studio / XCode để liên kết các thư viện gốc bổ sung. Expo nhằm mục đích tăng cường RN và cung cấp tất cả API JS bạn cần cho các nhu cầu phổ biến nhất. Về cơ bản, nó là một tập hợp các lib gốc chất lượng được xác định rõ ràng đã được đóng gói cho bạn trong một lib duy nhất: ExpoKit. Đôi khi các thư viện này thực sự đã tồn tại trong thế giới RN và được tích hợp vào ExpoKit.
Một điều cũng quan trọng cần lưu ý là nhóm Expo không thể bao gồm mọi lib ngoài đó vào ExpoKit (điều này có thể gây ra sự thất vọng) vì kích thước ứng dụng hello world sẽ tăng lên, vì nó sẽ vận chuyển rất nhiều API sẽ không được sử dụng trong hầu hết các ứng dụng.
Giống như các hệ thống khác (CodePush ...), Expo cung cấp một hệ thống để cập nhật ứng dụng của bạn qua mạng. Điều này có nghĩa là bạn tải lên gói JS của mình trên CDN và các ứng dụng di động sẽ tự động tải xuống và sử dụng JS mới khi khởi động tiếp theo (mà không yêu cầu xuất bản / đánh giá từ các cửa hàng).
Expo cung cấp một công cụ CLI để tải lên / quản lý các gói JS trên CDN của họ. Để phát triển, bạn cũng có thể chọn trở thành CDN và lưu trữ gói JS trên localhost. Và XDE chỉ là một trình bao bọc trực quan trên CLI.
Ứng dụng khách Expo là một ứng dụng khách chung cho phép tải bất kỳ ứng dụng nào tương thích với Expo. Tất cả các ứng dụng Expo đều có chung thời gian chạy chính xác (RN + ExpoKit), điểm khác biệt duy nhất là JS mà chúng tôi cung cấp cho chúng. Các ứng dụng hội chợ triển lãm mà bạn xuất bản tới các cửa hàng ứng dụng có mã url gói JS được mã hóa trong đó. Ứng dụng khách Expo được xây dựng theo một cách cụ thể để bạn có thể chọn từ url nào để tải JS, bằng cách quét QRCode hoặc cung cấp url.
Lưu ý rằng ứng dụng khách này cũng có thể tải các gói JS từ localhost và giúp trải nghiệm phát triển của bạn dễ dàng hơn: không cần XCode hoặc Android Studio và sẽ nhanh hơn nhiều khi Hello World đầu tiên của bạn chạy trên điện thoại (từ vài giờ đến vài phút). Bạn thực sự có thể phát triển trên iPhone mà không cần máy Mac và quá trình thiết lập mất 2 phút.
Trên thực tế vì SDK SDK có thể được nâng cấp, ứng dụng khách Expo bao gồm một lớp tương thích để có thể chạy 5 phiên bản SDK cuối cùng.
Vì tất cả các ứng dụng Expo đều có chung mã gốc, Expo có thể dễ dàng xây dựng các ứng dụng này cho bạn. Họ đã tạo ra một dịch vụ xây dựng đám mây.
Điều quan trọng khác biệt giữa 2 ứng dụng được xây dựng bởi Expo chỉ là url được mã hóa cứng mà ứng dụng được cho là tải xuống gói JS để chạy.
Expo thực hiện một số việc khác cho bạn, như cung cấp một cách khai báo để thiết lập biểu tượng ứng dụng, định hướng, quyền, khóa api, giúp bạn thiết lập thông báo đẩy, cung cấp hồ sơ ... nhiều cài đặt phải được mã hóa cứng khi xây dựng ứng dụng và có thể Sẽ được thay đổi trong không khí.
React Native tương tự như Cordova. Nó không phải là cùng một công nghệ xem (gốc so với webview) nhưng cả hai đều cho phép bạn kiểm soát các tính năng gốc từ javascript và cả hai đều cung cấp một hệ thống plugin để các nhà phát triển có thể dễ dàng thêm các ràng buộc JS / gốc mới.
PhoneGap tương tự như hội chợ triển lãm. Cả hai đều cố gắng làm phong phú API thô của nền tảng cơ bản mà chúng được xây dựng với một bộ bổ sung gốc được xác định trước. PhoneGap cũng cung cấp dịch vụ xây dựng và có một ứng dụng khách chung hoạt động miễn là bạn sử dụng các plugin được phê duyệt.
Như bạn có thể thấy, Expo là một bộ công cụ. Cuối cùng, nó cho phép dễ dàng phát triển, chia sẻ và xuất bản tới các cửa hàng các dự án di động của bạn. Nó khá giống với trải nghiệm PhoneGap (nhưng tốt hơn rất nhiều và ít gây nhầm lẫn).
Tôi chắc chắn sẽ đề xuất Expo cho bất kỳ dự án Greenfield React mới nào, ngoại trừ 2 trường hợp sau:
Nó được giải thích trong tài liệu chính thức của hội chợ triển lãm
Sự khác biệt giữa Expo và React Native là gì?
Expo giống như Rails cho React Native. Rất nhiều thứ được thiết lập cho bạn, vì vậy nhanh hơn để bắt đầu và đi đúng hướng.
Với hội chợ triển lãm, bạn không cần Xcode hoặc Android Studio. Bạn chỉ cần viết JavaScript bằng bất kỳ trình soạn thảo văn bản nào mà bạn cảm thấy thoải mái (Atom, vim, emacs, Sublime, VS Code, bất cứ điều gì bạn thích). Bạn có thể chạy XDE (phần mềm máy tính để bàn của chúng tôi) trên Mac, Windows và Linux.
Dưới đây là một số điều mà hội chợ triển lãm mang đến cho bạn ngay lập tức:
Hỗ trợ cho iOS và Android
Bạn có thể sử dụng các ứng dụng được viết trong hội chợ triển lãm trên cả iOS và Android ngay lập tức. Bạn không cần phải trải qua một quá trình xây dựng riêng cho từng người. Chỉ cần mở bất kỳ ứng dụng Expo nào trong ứng dụng Expo Client từ App Store trên iOS hoặc Android (hoặc trong trình giả lập hoặc giả lập trên máy tính của bạn).
Thông báo đẩy
Thông báo đẩy hoạt động ngay lập tức trên cả iOS và Android, sử dụng API thống nhất, duy nhất. Bạn không phải thiết lập APNS và GCM / FCM hoặc định cấu hình ZeroPush hoặc bất cứ thứ gì tương tự. Chúng tôi nghĩ rằng chúng tôi đã làm điều này dễ dàng như nó có thể ngay bây giờ.
Đăng nhập Facebook
Điều này có thể mất nhiều thời gian để tự thiết lập đúng cách, nhưng bạn sẽ có thể làm cho nó hoạt động trong 10 phút hoặc ít hơn trên Expo.
Cập nhật tức thì
Tất cả các ứng dụng Expo có thể được cập nhật trong vài giây chỉ bằng cách nhấp vào Xuất bản trong XDE. Bạn không cần phải thiết lập bất cứ điều gì; Nó chỉ hoạt động theo cách này. Nếu bạn không sử dụng Expo, bạn sẽ sử dụng Microsoft Code Push hoặc đưa ra giải pháp của riêng mình cho vấn đề này
Quản lý tài sản
Hình ảnh, video, phông chữ, v.v ... đều được phân phối linh hoạt qua Internet với hội chợ triển lãm. Điều này có nghĩa là chúng hoạt động với cập nhật tức thì và có thể được thay đổi nhanh chóng. Hệ thống quản lý tài sản tích hợp trong hội chợ triển lãm đảm nhận việc tải tất cả tài sản trong repo của bạn lên CDN để chúng sẽ tải nhanh chóng cho bất kỳ ai.
Không có hội chợ triển lãm, điều bình thường cần làm là đưa tài sản của bạn vào ứng dụng của bạn, điều đó có nghĩa là bạn không thể thay đổi chúng. Hoặc bạn phải quản lý việc đưa tài sản của mình vào CDN hoặc tương tự.
Cập nhật dễ dàng hơn để phát hành bản gốc mới
Chúng tôi thực hiện các phiên bản mới của hội chợ triển lãm cứ sau vài tuần. Bạn có thể ở lại phiên bản cũ của React Native nếu bạn thích hoặc nâng cấp lên phiên bản mới mà không phải lo lắng về việc xây dựng lại nhị phân ứng dụng của mình. Bạn có thể lo lắng về việc nâng cấp JavaScript vào thời gian của riêng bạn.
Nhưng không có mô-đun bản địa nào
Điều hạn chế nhất về hội chợ triển lãm là bạn không thể thêm vào các mô-đun riêng của mình mà không tách rời và sử dụng ExpoKit.
Expo XDE
bàn điều khiển hoặc trong exp start
đầu ra lệnh của bàn điều khiển.
EXPO CLI
ưu: -
1. No need to install Android studio and Xcode for start building mobile app.
2. No requirement of high configuration machine for development.
3. Mobile ui easily check on both devices android and iphone using barcode scanning.and some time you can check on online iphone and android simulators.
4. fast development.
Nhược điểm: -
1. Native dependency can not add on expo because expo project don't have ios and android folder so here expo is bounded.
2. Making apk and ipa are to difficult using expo.
3. Size of the apk/ipa is huge
Phản ứng Cli bản địa
Ưu điểm: -
1. Easily add native dependency for android and ios because this project structure have ios and android folder.
2. Apk and ipa build making is easy rather than expo.
Note":- React Native cli is right approach to started work on react native framework.
Nhược điểm: -
1. High configuration machine is require.
2. Adding dependency some time more difficult but good.
3. Required basic knowledge of android folder structure and ios folder structure but from this learn more things.
Bạn có thể thích bất kỳ phương pháp tiếp cận theo yêu cầu của bạn.
Tôi sẽ lưu ý ở đây rằng Expo đang sử dụng phiên bản cũ hơn của phản ứng 16.5. Điều này sẽ cấm bạn sử dụng tính năng móc mới. Nếu bạn quyết định đi với Expo, hãy chú ý xem các điều khiển phiên bản của bạn. Các phiên bản cũ hơn của điều hướng phản ứng sẽ cần được sử dụng với phiên bản 16.5 nếu bạn gặp phải các lỗi lạ.
expo update
thực hiện khá tốt việc có được các phiên bản tương thích cho hầu hết các gói được quản lý bởi Expo. Ngay bây giờ, tôi không nghĩ rằng nó cập nhật React Navigation, nhưng thư viện đó thực sự được tài trợ bởi Expo. Cá nhân, tôi hiếm khi gặp phải các vấn đề tương thích giữa React Navigation và Expo (Tôi nghĩ rằng tôi đã gặp một số vấn đề khi sử dụng phiên bản beta). Tuy nhiên, bạn có thể thấy nhiều vấn đề tương thích hơn với các gói không do Expo quản lý.
Các câu trả lời về ưu điểm và nhược điểm của expo và Reac -igen-cli đã hoàn tất. Tôi muốn đề cập đến một điểm khác như kinh nghiệm cá nhân của tôi. Expo chứa nhiều mô-đun theo mặc định trong dự án và nó làm việc dễ dàng hơn với nó. Nhưng nó có một vấn đề lớn về giai đoạn sản xuất vì các phiên bản được xây dựng android
và ios
có kích thước lớn như vậy. Ví dụ nếu bạn có một trang duy nhất với một 'Hello World'
sự apk
kích thước tập tin sẽ vào khoảng 19 MB
. Có một dự án tương tự trong Reac -igen-cli sẽ dẫn đến một ứng dụng có kích thước 6 MB
.
Vì vậy, cá nhân tôi không khuyên bạn nên sử dụng expo nếu bạn muốn phát triển một ứng dụng thương mại.
Tôi đã trải qua hơn một năm hoạt động với hội chợ triển lãm Nếu Kích thước của ứng dụng không quan trọng đối với bạn khi sử dụng Expo vì việc triển khai Bản đồ dễ dàng, Đẩy dễ dàng hơn React -igen nhưng ở cuối dự án nếu bạn muốn xuất bản ứng dụng trong Google Play hoặc một cửa hàng khác mà bạn gặp khó khăn khi xóa một số Quyền trong APK React -igen, bạn có thể thay đổi mọi thứ nhưng để nhập một số thư viện như thông báo đẩy hoặc bản đồ cũng cần một số thách thức vì bạn phải thêm các thư viện này theo cách thủ công dự án Android và iOS
expo là một chuỗi công cụ được xây dựng xung quanh React Native để giúp bạn nhanh chóng khởi động một ứng dụng. Nó cung cấp một bộ công cụ giúp đơn giản hóa việc phát triển và thử nghiệm ứng dụng và giao diện và dịch vụ React Native thường có sẵn trong các thành phần React Native của bên thứ ba. Với hội chợ triển lãm, bạn có thể tìm thấy tất cả chúng trong Expo SDK.