[React Native] คืออะไร ทำความรู้จัก และเริ่มต้นสร้าง Project

Jedsada Saengow
JED-NG
Published in
6 min readMay 26, 2018

React Native คือ เครื่องมือที่สามารถ Build Mobile Application ทั้ง iOS และ Android หรือก็คือเป็น Cross Platform Technology นั่นเอง โดยใช้ JavaScript เป็นหลักในการพัฒนา

ซึ่ง React Native ถูกสร้างขึ้นโดยทีมงาน Facebook เป็น Open source ที่มี License เป็น MIT และเป็น Framwork ที่สามารถเข้าถึง Native ได้ แถมยังมี Community ที่กว้าง มีนักพัฒนาหลายคน ทำ Lib ออกมาให้ได้ใช้กันอย่างไม่มีค่าใช้จ่ายอีกด้วย จึงเป็น Tools ตัวหนึ่งที่เป็นที่นิยมมากในปัจจุบัน

ท่านผู้อ่านสามารถดูรายละเอียดเพิ่มเติมได้ที่ลิงค์ด้านล่าง

ทำความรู้จัก React Native

ก่อนเริ่มทำสิ่งใดซักอย่าง จะให้ดีก็ต้องรู้จักกับสิ่งนั้นก่อน

ทำไมถึงมาเป็น React Native ได้ ?

สำหรับการเกิดขึ้นของ React Native นั้น เป็นการนำ ReactJS ซึ่งเป็น JavaScript Framework ของทาง Facebook ที่ใช้กับ Web site มาต่อยอดใช้กับ Mobile จึงสามารถใช้ส่วนของข้อดีต่าง ๆ ของ ReactJS ได้ ยกอย่างเช่น การใช้ Code ร่วมกันในรูปแบบ Component

ในส่วนของการเกิดขึ้นของ React Native สามารถอ่านเพิ่มเติมได้จากบทความของคุณ Koolapat Sirikamol ได้จากบทความนี้ครับ

Architecture ของ React Native

เป็นการทำงานของ JavaScript ที่เราเขียน สื่อสารกับฝั่งของ Native ด้วย JSON แบบเฉพาะ มีลักษณะเป็น Serialization โดยเราเรียกส่วนที่มันสื่อสารกันว่า Bridge

ภาพจาก: https://speakerdeck.com/mkonicek/under-the-hood-of-react-native?slide=26
ภาพจาก: https://speakerdeck.com/frantic/react-native-under-the-hood?slide=46

ซึ่งแน่นอนว่าสุดท้าย เราจะได้ Native App ทั้ง iOS และ Android

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ Architecture นี้ ขอแนะนำให้อ่านบทความของคุณ Koolapat Sirikamol เช่นกันครับ

การติดตั้ง Tools สำหรับการพัฒนา Mobile App ด้วย React Native

มาเริ่มในส่วนของการติดตั้ง …​ โดยใน Document ของทาง Facebook แบ่งไว้ 2 แบบ คือ

  • Quick Start คือ วิธีที่เน้นความสะดวก ไม่ต้องสนใจการ Config ไม่ต้องมี Android Studio หรือ XCode เพราะใช้เจ้าตัว Expo มาจัดการให้ทุกอย่าง เหมาะสำหรับการพัฒนาที่ไม่ต้องเข้าไปยุ่งกับ Coding หรือ Libs ในส่วนที่เป็น Native Code (Java, Objective C)
  • Build Projects with Native Code คือ วิธีที่ต้อง Config ค่าต่าง ๆ เอง ต้องมี XCode สำหรับ iOS และ Android Studio สำหรับ Android (ทาง Android จะเหนื่อยกว่าหน่อย 😂😂) ซึ่งเป็นวิธีที่มาตั้งแต่การเกิดของ React Native เหมาะสำหรับงานเล็กไปจนถึงงานใหญ่เวอร์

Quick Start

เริ่มต้นติดตั้ง create-react-native-app ซึ่งจะเป็นตัว Install Package ที่จำเป็น และจัดการ Config ให้เราครับ ต้องใช้ npm ในการติดตั้ง หากท่านผู้อ่านท่านใดยังไม่มี Node.js ให้โหลดให้เรียบร้อย และรันคำสั่งด้านล่างนี้ครับ

npm install -g create-react-native-app

จากนั้นให้รันด้วยคำสั่งข้างล่างเพื่อสร้าง Project React Native และ Start โดยทางผู้เขียนจะใช้ชื่อ Project ว่า jedApp

create-react-native-app jedApp
cd jedApp
npm start

จะได้ผลลัพธ์ด้านล่าง

เมื่อรันคำสั่งเสร็จแล้ว จะมี option ให้เลือกดังนี้

ทางผู้เขียนจะขอทดสอบการเปิด iOS emulator ด้วยการพิมพ์ i ได้ผลลัพธ์ดังนี้

สำหรับ QR code คือ ท่านผู้อ่านสามารถ Download Application Expo เพื่อทดสอบ Application ที่เราสร้างได้ โดยดาวน์โหลดจาก Store ได้เลยทั้ง iOS และ Android ซึ่งส่วนนี้นี่เองครับ การเข้ามาของ Expo จึงทำให้ผู้พัฒนาที่ใช้ Windows OS, Linux OS สามารถพัฒนา iOS ได้

Build Projects with Native Code

เริ่มต้นติดตั้ง dependencies ที่จำเป็นที่ต้องใช้ โดยตรวจสอบได้ตามหัวข้อดังนี้

  • Mac: รองรับ iOS, Android
  • Windows: รองรับ Android เท่านั้น
  • Linux: รองรับ Android เท่านั้น

เริ่มต้นติดตั้ง react-native-cli ซึ่งจะเป็นตัวที่รวมคำสั่งของ react-native เอาไว้

npm install -g react-native-cli

จากนั้นสร้าง Project โดยรันคำสั่งด้านล่าง ทางผู้เขียนจะใช้ชื่อ Project คือ jedApp

react-native init jedApp

Run iOS (ปัจจุบันรองรับสำหรับ Mac เท่านั้น)

เมื่อสร้าง Project เสร็จแล้ว จะ cd ไปที่ Folder ที่ Project และเริ่ม Run iOS เพื่อทดสอบ โดยใช้คำสั่งดังนี้

cd jedApp
react-native run-ios

iOS Emulator จะถูกเปิดขึ้นมาอัตโนมัติ และได้ผลลัพธ์ดังภาพด้านล่าง

เป็นอันเสร็จสิ้นการ Run iOS

Run Android

สำหรับ Android แนะนำให้เปิด Android Studio ขึ้นมารันก่อน เนื่องจากต้องเปิด Android Emulator ด้วยตนเอง และ Gradle ที่ React Native ให้มายังเป็นมีค่า Setting ที่เป็นค่าเก่า ซึ่งใน Android Studio จะมีการตรวจสอบให้ครับ

เปิด Android Studio และเลือก Open an existing Android Studio project และเลือก Folder ที่ชื่อว่า android ใน Project ของเรา

เมื่อเข้ามาแล้ว ถ้าพบกับหน้าจอตามภาพด้านล่างให้เลือกที่ Update

ต่อไปทางผู้เขียนจะเริ่มโดยการสร้าง Android Emulator ก่อน โดยคลิกที่ icon AVD Manager ตามภาพด้านล่าง

จากนั้นจะพบกับหน้าจอ Your Virtual Devices ซึ่งยังไม่มี Virtual Device หรือ Emulator ใด ๆ ให้คลิกที่ + Create Virtual Device …

และเลือก System Image ที่ต้องการ โดยทางผู้เขียนเลือก Nouget API Lavel 25 (Ancroid 7.1.1) ให้คลิกที่ Download จากนั้นให้รอจนกว่าจะเสร็จ

เมื่อเสร็จแล้ว ต่อไปคือหน้าจอ Select Hardware ให้เลือก รุ่นของ Phone ที่ใช้ ทางผู้เขียนเลือก Nexus 5X (ไม่ต้องกังกวลครับ ไม่ชอบใจก็ลบเดี๋ยวสร้างใหม่ 😎😎) จากนั้นให้ Next และ Finish ได้เลย เพราะค่าอื่น ๆ ให้ใช้ตาม Default ก็เพียงพอครับ

เมื่อเราได้ Emulator มาแล้วก็เปิดเลยครับ (แค่นี้ก็จุกจิกกว่า iOS ละครับ)

ต่อไปจะเริ่ม Run ซึ่งเราสามารถสั่ง Run ที่ใน Android Studio ได้ หรือจะมา Run Command ที่ Terminal/CMD ก็ได้ครับ แต่ขอแนะนำให้ Run ด้วย Command ก่อน

โดยใช้คำสั่ง

react-native run-android

และจำได้ผลลัพธ์ตามภาพด้านล่าง

💥💥💥 Boooooooom ~~~💥💥💥

อะไรหว่า แค่เริ่มก็เอาเลยหรอ ที่นี้ลองเอา Error ไปถามป๋า Google ก็ได้คำตอบว่า

อ่อ … ให้ไปใส่ google() ที่ build.gradle งั้นก็จัดไป

เมื่อใส่เสร็จแล้วกลับมารัน react-native run-android อีกครั้ง

เป็นอันเสร็จสิ้นการ Run Android

ทดสอบการใช้งาน

ให้เปิดไฟล์ App.js ขึ้นมา และแก้ Code ในส่วนของตัวแปรที่ชื่อว่า instructions เป็นประมาณนี้

จากนั้นมา Reload เพื่อดูการเปลี่ยนแปลง

  • สำหรับ iOS ให้ ⌘+R
  • สำหรับ Android ให้ R 2 ครั้ง

จบไปเรียบร้อยครับ สำหรับบทความนี้ ทางผู้เขียนก็มี plan ว่าจะเขียนบทความหน้าเกี่ยวกับ React Native ต่อไป ฝากติดตามด้วยนะครับ

แนะนำ

หากท่านผู้อ่านอยากเห็น Demo ของ Application ที่สร้างจาก React Native แนะนำให้ Download Application นี้มาลองครับ

สำหรับ Android

สำหรับ iOS

ส่วน Document เพิ่มเติม นอกจากอ่านได้ที่ facebook github แล้ว ขอแนะนำเว็บไซต์ reactnativeexpress ครับ เพราะเป็นที่ ๆ รวมทุกอย่างที่จำเป็นไว้หมดเลย ทั้งการใช้งาน ES6, JSX และผลลัพธ์ของการ Compile จาก ES6, JSX หรือจะเป็นผลลัพธ์ของ Component ก็มีครับ

และสำหรับท่านผู้อ่านท่านใดต้องการจริงจังกับ React Native ขอแนะนำให้โฟกัส 7 อย่าง ตามที่ Kitti Pariyaakkarakul เพื่อนของผู้เขียนได้กล่าวไว้ เพราะมันเป็นสิ่งที่จะต้องเจอปัญหา และต้องย้อนกลับมาทำความเข้าใจแน่ ๆ สามารถอ่านได้ที่ลิงค์ด้านล่างครับ

ส่วนเรื่องที่มาทำงานเกี่ยวกับ React Native และมาเขียนบทความแชร์ อยากจะขอบคุณ พี่ดิว olDuelo ณ ที่นี้ ที่ทำให้ผมได้รู้จักเทคโนโลยี Cross Platform และรู้จัก React Native และได้มาทำงานที่ชอบครับ

หากท่านใดสนใจบทความของพี่ดิวก็ติดตามกันได้ที่ลิงค์ด้านล่างนี้ครับ

--

--