Expo ช่วยให้นักพัฒนาเว็บสามารถสร้างแอปที่แท้จริงที่ทำงานได้ทั้ง iOS และ Android โดยเขียนเพียงครั้งเดียวด้วย JavaScript
นี่ไม่ใช่สิ่งที่ React Native ทำใช่หรือไม่ ความแตกต่างคืออะไร?
Expo ช่วยให้นักพัฒนาเว็บสามารถสร้างแอปที่แท้จริงที่ทำงานได้ทั้ง iOS และ Android โดยเขียนเพียงครั้งเดียวด้วย JavaScript
นี่ไม่ใช่สิ่งที่ React Native ทำใช่หรือไม่ ความแตกต่างคืออะไร?
คำตอบ:
ฉันทำงานที่ Expo!
เมื่อคุณเขียนรหัสในExpo
คุณเขียนReact Native
รหัส Expo
มีสองชิ้นหลัก:
1) expo-cli
: เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์สำหรับการสร้างโครงการการดูบันทึกการเปิดอุปกรณ์ของคุณการเผยแพร่ ฯลฯ
2) Expo
ลูกค้า: แอปในโทรศัพท์ของคุณที่ช่วยให้คุณเปิดโครงการในขณะที่คุณกำลังทำงานกับพวกเขาโดยไม่จำเป็นต้องผ่านXCode
หรือหรือAndroid Studio
ให้คนอื่นดูด้วย! และหากคุณเผยแพร่ผ่านexpo-cli
ผู้คนสามารถเข้าถึงได้ตลอดเวลาผ่านExpo
ไคลเอนต์บน Android หรือบน iOS หากลงชื่อเข้าใช้บัญชีเดียวกันที่เผยแพร่ด้วย สุดท้ายนี้เรายังทำให้สามารถสร้างแอปแบบสแตนด์อโลนเพื่อให้ผู้คนไม่ต้องใช้Expo
ไคลเอนต์เพื่อเปิดมันและคุณสามารถแจกจ่ายไปยัง app store และ play store ได้หากต้องการ
ดังนั้นExpo
เป็นชุดของเครื่องมือที่สร้างขึ้นบน / React Native
รอบ เครื่องมือเหล่านี้ขึ้นอยู่กับความเชื่อหลักที่เรายึดถือExpo
: เป็นไปได้ในการสร้างแอพส่วนใหญ่โดยไม่จำเป็นต้องเขียนโค้ดเนทีฟหากคุณมี API ที่Javascript
ครอบคลุม
นี่เป็นสิ่งสำคัญเนื่องจากReact Native
คุณสามารถเลื่อนลงไปที่รหัสภาษาได้ สิ่งนี้มีประโยชน์อย่างไม่น่าเชื่อบางครั้ง แต่มีค่าใช้จ่าย: คุณต้องส่งคนของคุณไบนารีถ้าคุณต้องการให้พวกเขาทดสอบพวกเขาคนในด้านอื่น ๆ ของโลกไม่เพียงแค่แตะที่ลิงค์เพื่อเปิดในขณะที่คุณทำงาน ที่นี่และคุณไม่สามารถเผยแพร่ได้ด้วยการคลิกเพียงครั้งเดียวเพื่อให้บางคนสามารถเข้าถึงได้เช่นเดียวกับที่คุณทำในเบราว์เซอร์
ด้วยExpo
เราขอแนะนำให้พยายามหลีกเลี่ยงการปล่อยรหัสภาษาท้องถิ่นหากคุณทำได้ ดังที่ฉันได้กล่าวไว้ข้างต้นเราคิดว่าด้วยชุด API ที่ครอบคลุมมีให้Javascript
ซึ่งจะไม่จำเป็นสำหรับแอพส่วนใหญ่ ดังนั้นเรามุ่งมั่นที่จะให้บริการชุด API ที่ครอบคลุมนี้จากนั้นสร้างเครื่องมือที่ยอดเยี่ยมทั้งหมดที่สามารถมีอยู่ในโลกที่มีการใช้งานจริงเนทีฟร่วมกัน
อย่างไรก็ตามหากคุณต้องพบว่าคุณดรอปดาวน์เป็น Native อย่างแน่นอนคุณสามารถใช้ExpoKit
เพื่อดำเนินการต่อโดยใช้ Native APIs ที่Expo
ให้คุณในขณะที่มีการควบคุมในระดับเดียวกับที่คุณทำในโครงการเนทิฟใด ๆ " ExpoKit
เป็นไลบรารี Objective-C และ Java ที่อนุญาตให้คุณใช้Expo
แพลตฟอร์มและExpo
โครงการที่มีอยู่ของคุณเป็นส่วนหนึ่งของโครงการเนทีฟมาตรฐานขนาดใหญ่" อ่านเพิ่มเติมได้ที่นี่
ฉันพยายามทำเอกสารสรุปและคำตอบจากพนักงาน Expo:
ตอบสนอง Native init:
ข้อดี :
ข้อเสีย :
งานแสดงสินค้า
ข้อดี :
ข้อเสีย :
ฉันหวังว่าฉันจะสามารถสรุปประเด็นที่สำคัญที่สุดได้ โปรดเพิ่มคะแนนเพิ่มเติม
แหล่งที่มา: https://code.tutsplus.com/tutorials/detaching-expo-apps-to-expokit-concepts--cms-30661 https://github.com/react-community/create-react-native-app/ ปัญหา / 516 # issecomment-373629114 https://docs.expo.io/versions/latest/guides/detach.html (เอกสารทางการทั่วไปโดยทั่วไป)
คำตอบของ Brent Vatne นั้นใช้ได้ แต่ฉันต้องการเพิ่มรายละเอียด
React Native ไม่ให้ JS API ทั้งหมดที่คุณต้องการนอกกรอบ แต่จะมีคุณลักษณะดั้งเดิมเท่านั้น นักพัฒนา Native React คาดว่าจะใช้ Android Studio / XCode เพื่อเชื่อมโยงไลบรารีเนทีฟเพิ่มเติม Expo มีจุดประสงค์เพื่อปรับปรุง RN และมอบ JS API ทั้งหมดที่คุณต้องการสำหรับความต้องการทั่วไป โดยทั่วไปแล้วจะเป็นชุดของ libs ดั้งเดิมที่มีคุณภาพที่กำหนดไว้อย่างดีซึ่งได้จัดทำขึ้นสำหรับคุณใน lib เดียว บางครั้งห้องสมุดเหล่านี้มีอยู่จริงแล้วในโลก RN และรวมเข้ากับ ExpoKit
สิ่งสำคัญคือต้องสังเกตว่าทีมงาน Expo ไม่สามารถรวม lib ทุกตัวลงใน ExpoKit (ซึ่งอาจสร้างความหงุดหงิด) เนื่องจากขนาดของแอป Hello World จะเพิ่มขึ้นเนื่องจากจะส่ง API จำนวนมากที่ไม่ได้ใช้ ในแอพส่วนใหญ่
เช่นเดียวกับระบบอื่น ๆ (CodePush ... ) Expo นำเสนอระบบเพื่ออัปเดตแอปของคุณผ่านทางอากาศ ซึ่งหมายความว่าคุณอัปโหลดชุดบันเดิล JS ของคุณบน CDN และแอปมือถือจะดาวน์โหลดและใช้งาน JS ใหม่โดยอัตโนมัติในการเริ่มต้นครั้งถัดไป (โดยไม่ต้องขอสิ่งพิมพ์ / รีวิวจากร้านค้า)
Expo มีเครื่องมือ CLI เพื่ออัปโหลด / จัดการชุดบันเดิล JS บน CDN สำหรับการพัฒนาคุณสามารถเลือกเป็น CDN และโฮสต์ JS bundle บน localhost และ XDE เป็นเพียง wrapper ที่มองเห็นได้บน CLI
ลูกค้า Expo เป็นลูกค้าทั่วไปที่อนุญาตให้โหลดแอปใด ๆ ที่เข้ากันได้กับ Expo แอพ Expo ทั้งหมดจะแชร์รันไทม์ดั้งเดิมที่แน่นอน (RN + ExpoKit) แน่นอนความแตกต่างเพียงอย่างเดียวคือ JS ที่เราให้พวกเขา แอป Expo ที่คุณเผยแพร่ไปยังร้านค้าแอปมี URL มัด JS ของคุณอยู่ในนั้น เอ็กซ์โปไคลเอ็นต์กำลังสร้างในวิธีเฉพาะเพื่อให้คุณสามารถเลือก URL ที่จะโหลด JS โดยสแกน QRCode หรือระบุ URL
โปรดทราบว่าไคลเอนต์นี้ยังสามารถโหลดบันเดิล JS จาก localhost และทำให้ประสบการณ์การพัฒนาของคุณง่ายขึ้น: ไม่จำเป็นสำหรับ XCode หรือ Android Studio และเร็วขึ้นมากในการทำให้ Hello World ของคุณทำงานบนโทรศัพท์เป็นครั้งแรก (จากชั่วโมงเป็นนาที) คุณสามารถพัฒนาบน iPhone โดยไม่ต้องใช้ Mac และการติดตั้งใช้เวลา 2 นาที
ที่จริงแล้วสามารถอัปเกรด Expo SDK ได้ไคลเอนต์ Expo จะรวมเลเยอร์ความเข้ากันได้เพื่อให้สามารถเรียกใช้ SDK รุ่น 5 ล่าสุดได้
ในขณะที่แอป Expo ทั้งหมดใช้รหัสท้องถิ่นเดียวกัน Expo ก็สามารถสร้างแอปเหล่านี้ให้คุณได้อย่างง่ายดาย พวกเขาได้สร้างบริการสร้างคลาวด์
สิ่งสำคัญที่แตกต่างกัน 2 แอพที่สร้างขึ้นโดย Expo เป็นเพียง URL แบบ hardcoded ที่แอพนี้ควรดาวน์โหลดบันเดิล JS เพื่อให้ทำงาน
Expo ทำสิ่งอื่น ๆ ให้กับคุณเช่นจัดเตรียมวิธีการประกาศการตั้งค่าไอคอนแอพการวางแนวการอนุญาตคีย์ api ช่วยให้คุณตั้งค่าการแจ้งเตือนแบบพุชโปรไฟล์การจัดสรร ... การตั้งค่าจำนวนมากต้องฮาร์ดโค้ดในเวลาสร้างในแอพ ไม่สามารถเปลี่ยนผ่านอากาศได้
React Native นั้นคล้ายกับ Cordova มันไม่ใช่เทคโนโลยีมุมมองเดียวกัน (native vs webview) แต่ทั้งคู่อนุญาตให้คุณควบคุมคุณลักษณะดั้งเดิมจาก javascript และทั้งคู่มีระบบปลั๊กอินเพื่อให้นักพัฒนาสามารถเพิ่ม JS / การผูกดั้งเดิมได้อย่างง่ายดาย
PhoneGap คล้ายกับ Expo พวกเขาทั้งสองพยายามเพิ่ม API แบบ raw ของแพลตฟอร์มพื้นฐานที่สร้างขึ้นด้วยปลั๊กอินดั้งเดิมเพิ่มเติมที่กำหนดไว้ล่วงหน้า PhoneGap ยังให้บริการสร้างและมีไคลเอนต์ทั่วไปที่ทำงานได้ตราบใดที่คุณใช้ปลั๊กอินที่อนุมัติ
อย่างที่คุณเห็น Expo เป็นชุดเครื่องมือ ในตอนท้ายมันอนุญาตให้พัฒนาแบ่งปันและเผยแพร่ไปยังร้านค้าโครงการมือถือของคุณได้อย่างง่ายดาย มันค่อนข้างคล้ายกับประสบการณ์ PhoneGap (แต่ดีกว่าและสับสนน้อยกว่า)
ฉันจะแนะนำ Expo ให้ชัดเจนสำหรับโครงการ React Native greenfield ใด ๆ ยกเว้น 2 กรณีนี้:
มีการอธิบายในเอกสารทางการของงานเอ็กซ์โป
ความแตกต่างระหว่าง Expo และ React Native คืออะไร
Expo เป็นเหมือน Rails สำหรับ React Native มีการตั้งค่าสิ่งต่าง ๆ มากมายสำหรับคุณดังนั้นจึงเป็นการเริ่มต้นและเส้นทางที่ถูกต้องเร็วขึ้น
ด้วย Expo คุณไม่จำเป็นต้องมี Xcode หรือ Android Studio คุณเพียงแค่เขียน JavaScript โดยใช้โปรแกรมแก้ไขข้อความที่คุณคุ้นเคย (Atom, vim, emacs, Sublime, VS Code, อะไรก็ได้ที่คุณชอบ) คุณสามารถเรียกใช้ XDE (ซอฟต์แวร์เดสก์ท็อปของเรา) บน Mac, Windows และ Linux
นี่คือบางสิ่งที่งานเอ็กซ์โปมอบให้คุณใช้งานได้ทันที:
รองรับ iOS และ Android
คุณสามารถใช้แอพที่เขียนในงานเอ็กซ์โปทั้ง iOS และ Android ได้ทันที คุณไม่จำเป็นต้องทำกระบวนการสร้างแยกต่างหากสำหรับแต่ละกระบวนการ เพียงเปิดแอพ Expo ใดก็ได้ในแอป Expo Client จาก App Store บน iOS หรือ Android (หรือในเครื่องจำลองหรือเครื่องจำลองบนคอมพิวเตอร์ของคุณ)
แจ้งเตือนผลักดัน
การแจ้งเตือนแบบพุชสามารถใช้งานได้ทันทีทั้งใน iOS และ Android โดยใช้ API แบบรวมศูนย์เดียว คุณไม่ต้องตั้งค่า APNS และ GCM / FCM หรือกำหนดค่า ZeroPush หรืออะไรทำนองนั้น เราคิดว่าเราทำให้เรื่องนี้ง่ายขึ้นเท่าที่ควรตอนนี้
เข้าสู่ระบบ Facebook
การดำเนินการนี้อาจใช้เวลานานในการตั้งค่าอย่างถูกต้อง แต่คุณควรจะสามารถใช้งานได้ภายใน 10 นาทีหรือน้อยกว่าในงาน Expo
กำลังอัปเดตทันที
แอป Expo ทั้งหมดสามารถอัปเดตได้ในไม่กี่วินาทีโดยเพียงคลิกเผยแพร่ใน XDE คุณไม่ต้องตั้งค่าอะไรเลย มันใช้งานได้ด้วยวิธีนี้ หากคุณไม่ได้ใช้งาน Expo คุณอาจใช้ Microsoft Code Push หรือแก้ไขปัญหาของคุณเองสำหรับปัญหานี้
การจัดการสินทรัพย์
รูปภาพวิดีโอแบบอักษรและอื่น ๆ ล้วนมีการแจกจ่ายผ่านอินเทอร์เน็ตแบบไดนามิกด้วย Expo ซึ่งหมายความว่าพวกเขาทำงานด้วยการอัปเดตทันทีและสามารถเปลี่ยนแปลงได้ทันที ระบบการจัดการสินทรัพย์ในตัว Expo จะดูแลการอัปโหลดเนื้อหาทั้งหมดใน repo ของคุณไปยัง CDN เพื่อให้ทุกคนโหลดได้อย่างรวดเร็ว
หากไม่มี Expo สิ่งที่ต้องทำปกติคือการรวมสินทรัพย์ของคุณเข้ากับแอปซึ่งหมายความว่าคุณไม่สามารถเปลี่ยนแปลงได้ หรือคุณต้องจัดการวางทรัพย์สินของคุณใน CDN หรือคล้ายกันด้วยตัวคุณเอง
การอัปเดตที่ง่ายขึ้นสำหรับการตอบสนองแบบเนทีฟใหม่
เราเปิดตัว Expo ใหม่ทุกสองสามสัปดาห์ คุณสามารถอยู่ในเวอร์ชันเก่าของ React Native หากคุณต้องการหรืออัพเกรดเป็นเวอร์ชั่นใหม่โดยไม่ต้องกังวลเกี่ยวกับการสร้างไบนารีแอปของคุณใหม่ คุณสามารถกังวลเกี่ยวกับการอัพเกรด JavaScript ในเวลาของคุณเอง
แต่ไม่มีโมดูลเนทิฟ ...
สิ่งที่ จำกัด มากที่สุดเกี่ยวกับ Expo คือคุณไม่สามารถเพิ่มโมดูลของคุณเองโดยไม่ต้องถอดออกและใช้งาน ExpoKit
Expo XDE
คอนโซลหรือในexp start
เอาต์พุตคำสั่งคอนโซล
expo start
จะแสดงที่อยู่ IP ของคุณในพื้นที่ของคุณคุณสามารถเข้าถึงรหัส QR ได้จาก
EXPO CLI
ข้อดี:-
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.
จุดด้อย: -
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
ตอบสนอง Native Cli
ข้อดี:-
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.
จุดด้อย: -
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.
คุณสามารถเลือกวิธีใดก็ได้ตามที่คุณต้องการ
ฉันจะจดบันทึกไว้ที่นี่ว่า Expo กำลังใช้รุ่นที่เก่ากว่าของปฏิกิริยา 16.5 ซึ่งจะห้ามไม่ให้คุณใช้คุณสมบัติ hooks ใหม่ หากคุณตัดสินใจที่จะไปกับ Expo จงระวังที่จะรับชมการควบคุมเวอร์ชันของคุณ รุ่นที่เก่ากว่าของ say-navigation การนำทางจะต้องใช้กับเวอร์ชัน 16.5 หากคุณได้รับข้อผิดพลาดแปลก ๆ
expo update
ทำได้ค่อนข้างดีในการรับเวอร์ชันที่เข้ากันได้สำหรับแพ็คเกจส่วนใหญ่ที่จัดการโดย Expo ณ ตอนนี้ฉันไม่คิดว่ามันจะอัพเดต React Navigation แต่จริงๆแล้วห้องสมุดนั้นได้รับการสนับสนุนจาก Expo โดยส่วนตัวแล้วฉันไม่ค่อยพบปัญหาความเข้ากันได้ระหว่าง React Navigation และ Expo (ฉันคิดว่าฉันเจอปัญหาสองสามอย่างเมื่อใช้รุ่นเบต้า) อย่างไรก็ตามคุณอาจเห็นปัญหาความเข้ากันได้กับแพ็คเกจที่ไม่ได้จัดการโดย Expo
คำตอบเกี่ยวกับข้อดีและข้อเสียของงานแสดงสินค้าและตอบสนอง cli พื้นเมืองเสร็จสมบูรณ์ ฉันต้องการพูดถึงจุดอื่นเป็นประสบการณ์ส่วนตัวของฉัน Expo มีโมดูลจำนวนมากตามค่าเริ่มต้นในโครงการและทำให้ทำงานได้ง่ายขึ้น แต่มันมีปัญหาใหญ่ในขั้นตอนการผลิตเพราะตัวสร้างandroid
และios
รุ่นมีขนาดที่ดีมาก ตัวอย่างเช่นถ้าคุณมีหน้าเดียวกับขนาดไฟล์จะเกี่ยวกับ การมีโครงการเดียวกันในภาษาที่ตอบสนองพื้นเมืองจะส่งผลให้แอปมีขนาดเท่ากับ'Hello World'
apk
19 MB
6 MB
จะส่งผลให้แอปที่มีขนาดที่
โดยส่วนตัวแล้วฉันไม่แนะนำให้ใช้งาน expo หากคุณต้องการพัฒนาแอพเชิงพาณิชย์
ฉันมีประสบการณ์มากกว่าหนึ่งปีที่ทำงานกับงานแสดงสินค้าถ้าขนาดของแอปไม่สำคัญสำหรับคุณที่ใช้งาน Expo เพราะมันง่ายต่อการใช้งานแผนที่กดง่ายกว่า React-native แต่ในตอนท้ายของโครงการถ้าคุณต้องการเผยแพร่ แอพใน Google Play หรือร้านค้าอื่นที่คุณมีความท้าทายในการลบสิทธิ์ใน APK React-native คุณสามารถเปลี่ยนแปลงทุกอย่าง แต่สำหรับการนำเข้าห้องสมุดบางอย่างเช่นการแจ้งเตือนแบบพุชหรือแผนที่ต้องการความท้าทายบางอย่างเช่นกันเพราะคุณต้องเพิ่มห้องสมุดเหล่านี้ด้วยตนเอง โครงการ android และ iOS
expo เป็น toolchain ที่สร้างขึ้นรอบ ๆ React Native เพื่อช่วยคุณเริ่มแอป มันมีชุดเครื่องมือที่ทำให้การพัฒนาและการทดสอบแอป React Native และอินเทอร์เฟซและบริการที่ใช้งานง่ายมีอยู่ในส่วนประกอบ React Native ดั้งเดิมของบุคคลที่สาม ด้วย Expo คุณสามารถค้นหาทั้งหมดได้ใน Expo SDK