एक Node.js एप्लिकेशन को कैसे डिप्लॉय करें?

ในบทความนี้ เราจะอธิบายวิธีการดีพลอยแอปพลิเคชัน Node JS เราจะพูดถึงข้อดีและข้อเสียของ Node และตัวเลือกการดีพลอย – รวมถึง IaaS, PaaS และ BaaS สุดท้ายเราจะดีพลอยแอป Node ไปยัง Back4app

Contents

Node.js คืออะไร?

Node.js เป็นสภาพแวดล้อมในการรัน JavaScript แบบเปิดเผยและข้ามแพลตฟอร์มที่สร้างบนเครื่องยนต์ JavaScript ของ Chrome คือ V8 JavaScript engine Node มีเป้าหมายเพื่อให้โปรแกรมเมอร์ JavaScript สามารถพัฒนาเต็มรูปแบบได้โดยการเขียนโค้ดฝั่งเซิร์ฟเวอร์ กรณีการใช้งานของมันรวมถึงการสคริปต์ฝั่งเซิร์ฟเวอร์ แอปพลิเคชันเรียลไทม์ แอปพลิเคชันเว็บสตรีมมิ่ง แอปพลิเคชันหน้าเดียว (SPA) เครื่องมือสำหรับการทำงานร่วมกัน และเกมบนเว็บ

Node มีสถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์และสามารถดำเนินการ I/O แบบอะซิงโครนัสได้ มันเร็วมาก เนื่องจากความสามารถในการคอมไพล์ JavaScript ไปเป็นโค้ดเครื่องพื้นฐาน สามารถจัดการ การเชื่อมต่อพร้อมกันเป็นจำนวนมาก และช่วยให้โปรแกรมเมอร์สามารถสร้างแอปพลิเคชันที่สามารถสเกลได้และมีประสิทธิภาพสูงได้อย่างง่ายดาย

เทคโนโลยีนี้ถูกแนะนำครั้งแรกในปี 2009 โดยผู้สร้าง Ryan Dahl ในงาน European JSConf ประจำปี และทันทีก็กลายเป็นหนึ่งในซอฟต์แวร์ที่น่าสนใจที่สุดในระบบนิเวศของ JavaScript

ความนิยมของ Node สูงสุดในปี 2017 และยังคงสูงอยู่ มันเป็นหนึ่งในเครื่องมือพัฒนาที่ได้รับความนิยมมากที่สุด ซึ่งใช้โดยบริษัทขนาดใหญ่หลายล้านดอลลาร์ เช่น IBM, LinkedIn, Microsoft, Netflix และอื่นๆ ความเรียบง่ายและความสามารถในการสเกลทำให้มันเหมาะสำหรับทุกขนาดของบริษัท รวมถึงสตาร์ทอัพด้วย

ในสองส่วนถัดไป เราจะเจาะลึกข้อดีและข้อเสียของ Node

ข้อดีของ Node.js

ประสิทธิภาพสูง

ตามที่กล่าวไว้ในบทนำ Node ขับเคลื่อนด้วยเครื่องยนต์ JavaScript ประสิทธิภาพสูงของ Google V8 สามารถคอมไพล์และรัน JavaScript ได้ด้วยความเร็วสูงมาก ส่วนใหญ่เนื่องจากมันคอมไพล์ JavaScript ไปเป็นโค้ดเครื่องพื้นฐาน

Node ยังใช้ event loop ซึ่งช่วยให้สามารถดำเนินการ I/O ที่ไม่บล็อกได้ แม้ว่า JavaScript จะเป็นภาษาการเขียนโปรแกรมแบบ single-threaded นี่ทำให้มันเป็นหนึ่งในตัวเลือกที่เร็วที่สุดในตลาด

ความสามารถในการสเกล

หนึ่งในประโยชน์หลักของ Node.js คือความสามารถในการสเกล แอปพลิเคชัน Node สามารถสเกลได้ทั้งในแนวนอนและแนวตั้ง การสเกลแนวนอนทำได้โดยการเพิ่มโหนดเพิ่มเติมเข้าไปในระบบที่มีอยู่ ในขณะที่การสเกลแนวตั้งหมายถึงการเพิ่มทรัพยากรเพิ่มเติมให้กับโหนดเฉพาะ ตัวเลือกการสเกลที่ยอดเยี่ยมของแพลตฟอร์มทำให้มันเหมาะสำหรับทั้งสตาร์ทอัพและบริษัทใหญ่ที่มีผู้ใช้รายวันเป็นล้านๆ คน เช่น LinkedIn, Netflix และ PayPal

Node ยังเหมาะสำหรับสถาปัตยกรรม microservices อีกด้วย ช่วยให้นักพัฒนาสามารถสร้างส่วนประกอบขนาดเล็กที่สอดคล้องกับสายการผลิตอย่างต่อเนื่องและสามารถสเกลได้ง่ายตามความต้องการ

เรียนรู้ง่าย

พื้นฐานของ Node อยู่บน JavaScript ทำให้เรียนรู้ได้ง่ายมากสำหรับนักพัฒนาที่รู้พื้นฐานของ JavaScript อยู่แล้ว มันไม่มีเส้นโค้งการเรียนรู้ที่สูงและสามารถเชี่ยวชาญได้ในเวลาเพียงไม่กี่สัปดาห์ ความเรียบง่ายของ Node ทำให้มันเหมาะสำหรับทุกประเภทของโปรเจกต์

ลดเวลาในการออกสู่ตลาดได้เร็วขึ้น

เวลาในการออกสู่ตลาดเป็นหนึ่งในตัวชี้วัดสำคัญของทีมพัฒนาหลายทีม ทุกคนต้องการนำผลิตภัณฑ์ออกสู่ตลาดให้เร็วที่สุด และ Node ช่วยให้คุณสามารถทำได้

ความเรียบง่ายของ Node และจำนวนแพ็คเกจ npm ที่มีมากช่วยลดเวลาในการออกสู่ตลาดได้อย่างมาก มีโปรเจกต์โอเพ่นซอร์สมากมายใน GitHub และแพลตฟอร์มอื่นๆ ที่สามารถใช้เป็นเทมเพลตเพื่อให้โปรเจกต์ของคุณเริ่มทำงานได้อย่างรวดเร็วที่สุด

เครื่องมือผ่านการทดสอบการต่อสู้

Node เป็นเครื่องมือที่ผ่านการทดสอบและมีความเสถียรมาตั้งแต่ปี 2009 ความเสถียรของมันได้รับการทดสอบโดยบริษัทใหญ่ๆ เช่น eBay, Netflix และ LinkedIn ที่มีผู้ใช้รายวันเป็นล้านๆ คน

เนื่องจากข้อดีที่ยอดเยี่ยมเหล่านี้ Node จึงถูกรวมอยู่ใน tech stacks หลายๆ แบบ (มักจะร่วมกับ Express และฐานข้อมูล NoSQL) บางส่วนของ tech stacks ที่ใช้ Node ได้แก่:

  • MERN
  • MEAN
  • DERN

ชุมชนที่ยอดเยี่ยม

Node.js มีชุมชนของนักพัฒนาและผู้ที่สนใจที่แข็งแกร่งและกระตือรือร้นที่คอยมีส่วนร่วมกับ Node อย่างต่อเนื่อง เพื่อทำให้มันดีขึ้นเรื่อยๆ หากคุณติดขัดกับปัญหาใดๆ หรือมีคำถาม มีหลายสถานที่ให้คุณไปหาความช่วยเหลือ เนื่องจากความนิยมของ Node การหาวิธีแก้ปัญหาที่มีอยู่แล้วและโค้ดบน GitHub ไม่ใช่เรื่องยาก

อีกสิ่งที่ยอดเยี่ยมเกี่ยวกับ Node.js คือผู้จัดการแพ็คเกจของมันที่ชื่อว่า npm (Node Package Manager) Npm ช่วยให้นักพัฒนาสามารถผลักดันและใช้แพ็คเกจ JavaScript ที่เตรียมไว้แล้ว แทนที่จะต้องประดิษฐ์วงล้อใหม่ แพ็คเกจเหล่านี้สามารถลดต้นทุนการพัฒนาและความซับซ้อนของแอปพลิเคชันได้อย่างมาก ณ เวลาที่เขียน บน npm มีแพ็คเกจมากกว่า 1.3 ล้านแพ็คเกจ

ข้อจำกัดของ Node.js

ประสิทธิภาพลดลงสำหรับงานที่ซับซ้อน

จุดด้อยที่ใหญ่ที่สุดของ Node.js คือความไม่สามารถในการทำงานที่ต้องใช้การคำนวณหนัก ๆ ในปัจจุบัน โปรแกรมและอัลกอริทึมจำนวนมากต้องการการประมวลผลแบบขนานเพื่อให้ได้ผลลัพธ์ที่เหมาะสม ดังที่คุณทราบกันดีว่า Node.js อิงอยู่บน JavaScript ซึ่งออกแบบมาให้เป็นภาษาสำหรับฝั่งหน้าแบบ single-threaded และไม่ได้รองรับหลายเธรด

ด้วยการอัปเดต 10.5 ทีมงาน Node.js ได้เปิดตัวการรองรับ multithreading ในรูปแบบของ worker threads โมดูลนี้ช่วยให้นักพัฒนาสามารถใช้ประโยชน์จากเธรดเพิ่มเติมจากพูลเธรด แม้จะมี worker threads Node ยังไม่เหมาะสำหรับการคำนวณหนัก ๆ หากข้อกำหนดโปรเจกต์ของคุณรวมถึงการคำนวณที่ซับซ้อน การคำนวณหนัก หรือการประมวลผลแบบขนาน คุณอาจจะเลือกใช้ภาษาโปรแกรมอื่นดีกว่า

รูปแบบการเขียนโปรแกรมแบบอะซิงโครนัส

Node.js ใช้รูปแบบการเขียนโปรแกรมแบบอะซิงโครนัส ด้วยเหตุนี้จึงพึ่งพาการใช้ callbacks อย่างมาก Callback คือฟังก์ชันที่ทำงานอยู่เบื้องหลังและ (ในบางจังหวะ) ส่งคืนผลลัพธ์ ด้วยการใช้ callbacks โค้ดของคุณอาจซับซ้อนและยากต่อการดีบั๊ก นอกจากนี้ หากคุณฝัง callbacks หลายระดับลึก คุณอาจจบลงด้วยที่เรียกว่า “callback hell”

ปัญหา callback hell และปัญหาอื่น ๆ ของการเขียนโปรแกรมแบบอะซิงโครนัสสามารถหลีกเลี่ยงได้ง่าย ๆ โดยการปฏิบัติตามหลักการ clean code

API ที่ไม่เสถียร

อีกปัญหาใหญ่ของ Node.js คือความไม่เสถียรของ Application Programming Interface (API) ของมัน API ของ Node มักมีการเปลี่ยนแปลงโดยไม่รองรับย้อนหลัง ซึ่งอาจทำให้โค้ดบางส่วนเกิดข้อผิดพลาด เป็นผลให้นักพัฒนา Node ต้องจับตาดูการเปลี่ยนแปลงและตรวจสอบให้แน่ใจว่า codebase ของพวกเขากันใช้งานได้กับเวอร์ชันล่าสุดของ API Node.js

ขาดระบบสนับสนุนไลบรารีที่แข็งแกร่ง

JavaScript ไม่มีระบบไลบรารีที่ดีเท่าเทียบกับภาษาการเขียนโปรแกรมอื่น ๆ สิ่งนี้บังคับให้นักพัฒนาจำนวนมากต้องจัดการกับงานทั่วไปต่าง ๆ เช่น การประมวลผลภาพ การวิเคราะห์ XML การแมปออบเจ็กต์-ความสัมพันธ์ (ORM) การจัดการฐานข้อมูล และอื่น ๆ ด้วยตัวเอง

ทะเบียนโมดูลที่โตเกินไปและยังไม่สมบูรณ์

Node มีชุมชนของนักพัฒนาจำนวนมากที่ผลิตโมดูลโอเพ่นซอร์สเป็นพัน ๆ ตัวที่เผยแพร่บน npm ปัญหาคือ npm ไม่ได้ดำเนินการตรวจสอบใด ๆ เพื่อให้แน่ใจว่าโค้ดของโมดูลทำงานได้และเขียนไว้อย่างดี

โมดูลจำนวนมากกลายเป็นไม่รองรับแบบสุ่ม หรือเกิดข้อผิดพลาดกับเวอร์ชัน Node ใหม่ ๆ แล้วนักพัฒนาจึงต้องมองหาทางเลือก ในอดีต บางโมดูลบน npm ยังถูกแฮ็กและฉีดไวรัสหรือซอฟต์แวร์ขุดคริปโตเข้ามาด้วย ด้วยเหตุนี้จึงหายากที่จะพบโมดูลที่สามารถใช้ในสภาพแวดล้อมองค์กรได้

อย่าคิดผิดนะ ฉันคิดว่า npm ยอดเยี่ยม แต่คุณก็ควรระมัดระวังเมื่อจะติดตั้งโมดูลแบบสุ่ม

ตัวเลือกการดีพลอย Node.js

มีหลายวิธีในการดีพลอยแอปพลิเคชัน Node.js โดยทั่วไปแล้ว เราสามารถแบ่งออกเป็นสี่กลุ่มดังนี้:

  1. การโฮสต์แบบดั้งเดิม
  2. Infrastructure as a Service (IaaS)
  3. Platform as a Service (PaaS)
  4. Backend as a Service (BaaS)

เราสามารถแสดงผลในรูปแบบแผนภาพพีระมิดตามระดับของการสรุป:

Cloud deployment models

ตัวเลือกการดีพลอยดูแลเลเยอร์การสรุปดังต่อไปนี้:

IaaS vs PaaS vs BaaS

เรามาดูแต่ละกลุ่มกัน จะข้ามการโฮสต์แบบดั้งเดิมไปก่อน เพราะฉันมั่นใจว่าคุณรู้วิธีการทำงานของมันแล้ว

บริการ IaaS เช่น AWS

Infrastructure as a Service (IaaS) คือโมเดลบริการคลาวด์คอมพิวติ้งที่ให้บริการทรัพยากรคอมพิวเตอร์ เช่น เซิร์ฟเวอร์ เครือข่าย ระบบปฏิบัติการ และการจัดเก็บข้อมูลในสภาพแวดล้อมที่เสมือนจริง เซิร์ฟเวอร์คลาวด์เหล่านี้มักจะจัดหาให้กับองค์กรผ่าน API ระดับสูงหรือแดชบอร์ดขั้นสูง ช่วยให้ลูกค้ามีการควบคุมทรัพยากรทั้งหมดได้อย่างสมบูรณ์

IaaS สามารถขยายตัวได้สูง ช่วยให้ลูกค้าสามารถขยายตัวได้ง่ายทั้งในแนวตั้งและแนวนอนตามความต้องการ ผู้ให้บริการ IaaS มักจะใช้โมเดลจ่ายตามการใช้งาน หมายความว่าคุณจ่ายเฉพาะทรัพยากรที่คุณใช้เท่านั้น

IaaS ปรากฏขึ้นในต้นทศวรรษ 2010 และนับตั้งแต่นั้นกลายเป็นโมเดลสรุปมาตรฐานสำหรับงานหลายประเภท แม้ในยุคของเทคโนโลยีใหม่ ๆ เช่น microservices และ serverless IaaS ก็ยังคงเป็นตัวเลือกที่นิยมที่สุด

เมื่อเทียบกับ PaaS และ BaaS IaaS ให้การควบคุมทรัพยากรในคลาวด์ในระดับต่ำสุด ทำให้เป็นโมเดลคลาวด์คอมพิวติ้งที่ยืดหยุ่นที่สุด ข้อเสียคือ ลูกค้าต้องรับผิดชอบเต็มที่ในการจัดการแอปพลิเคชัน ระบบปฏิบัติการ ซอฟต์แวร์มิดเดิลแวร์ และข้อมูล ซึ่งโดยปกติต้องใช้เวลามาก

ตัวอย่าง IaaS บางส่วนได้แก่:

  • Amazon Web Services (AWS)
  • Google Compute Engine (GCE)
  • Microsoft Azure
  • DigitalOcean
  • Linode
  • Rackspace

บริการ PaaS เช่น Heroku

Platform as a Service (PaaS) คือโมเดลบริการคลาวด์คอมพิวติ้งที่มอบสภาพแวดล้อมบนคลาวด์ให้กับผู้ใช้ เพื่อที่พวกเขาจะสามารถพัฒนา จัดการ และส่งมอบแอปพลิเคชันได้ นอกเหนือจากการให้ทรัพยากรคอมพิวเตอร์แล้ว PaaS ยังมาพร้อมกับเครื่องมือสำเร็จรูปมากมายสำหรับการพัฒนา ปรับแต่ง และทดสอบแอปพลิเคชัน ผู้ให้บริการ PaaS ส่วนใหญ่ช่วยให้คุณสามารถทำให้แอปของคุณทำงานได้ในไม่กี่คลิก!

PaaS ช่วยให้ผู้ใช้มุ่งเน้นไปที่แอปของตนเองแทนการจัดการโครงสร้างพื้นฐานพื้นฐาน ผู้ให้บริการ PaaS ทำหน้าที่เป็นเหมือนยกน้ำหนักให้คุณมากมาย เช่น จัดการเซิร์ฟเวอร์ ระบบปฏิบัติการ ซอฟต์แวร์เซิร์ฟเวอร์ การสำรองข้อมูล และอื่น ๆ

ข้อดีบางประการของ PaaS ได้แก่:

  • ความเร็วในการออกสู่ตลาดที่รวดเร็วขึ้น
  • ความปลอดภัยที่เพิ่มขึ้น
  • ความคุ้มค่าทางต้นทุน
  • ความสามารถในการสเกล
  • ความพร้อมสูง
  • ต้องเขียนโค้ดน้อยลง

ข้อด้อยของ PaaS คือคุณอาจต้องพึ่งพาความสามารถของผู้ให้บริการ มีความเสี่ยงที่จะถูกล็อคอิน และขาดความยืดหยุ่นและการควบคุม อย่างไรก็ตาม PaaS ยังคงช่วยให้ผู้ใช้สร้างแอปได้เร็วขึ้นและลดภาระในการจัดการลง

บริการ PaaS ได้แก่:

  • Heroku
  • AWS Elastic Beanstalk
  • DigitalOcean App Platform
  • Microsoft Azure App Service
  • The Fly Platform (Fly.io)
  • Render

บริการ BaaS เช่น Back4app

Backend as a Service (BaaS) คือแพลตฟอร์มที่ทำให้การพัฒนาด้านหลังอัตโนมัติและดูแลโครงสร้างพื้นฐานบนคลาวด์ นอกเหนือจากนั้นยังมอบคุณสมบัติต่าง ๆ เช่น การจัดการผู้ใช้ การแจ้งเตือนทางอีเมล การแจ้งเตือนพุช ฟังก์ชันโค้ดบนคลาวด์ การรวมโซเชียลมีเดีย การจัดเก็บไฟล์ และการชำระเงิน

สิ่งนี้ช่วยให้นักพัฒนาสามารถมุ่งเน้นไปที่ธุรกิจหลักและการสร้างส่วนติดต่อผู้ใช้โดยไม่ต้องกังวลเกี่ยวกับส่วนหลังและโครงสร้างพื้นฐาน ส่วนหน้ามักจะพัฒนาด้วย API และ SDK เฉพาะทางที่ผู้ให้บริการ BaaS เสนอ ซึ่งทำให้แอปพลิเคชันไม่ซับซ้อนและดูแลรักษาได้ง่ายขึ้น

BaaS ให้ประโยชน์ทั้งหมดของ IaaS และ PaaS ในขณะที่รวมการสรุปของส่วนหลัง ทีมที่ใช้ BaaS จะลดเวลาออกสู่ตลาดลงอย่างมาก ลดต้นทุนวิศวกรรม และต้องใช้นักวิศวกรน้อยลง

BaaS สามารถใช้สำหรับโปรเจกต์หลายประเภท – รวมถึงการสร้าง MVP (Minimum Viable Product) แอปพลิเคชันแยก หรือแอปที่ต้องการการรวมเพียงเล็กน้อย และแอปสำหรับองค์กรที่ไม่ใช่ภารกิจสำคัญ

ข้อด้อยของ BaaS คือความยืดหยุ่นน้อยกว่า IaaS และ PaaS ให้ระดับการควบคุมและการปรับแต่งที่ต่ำกว่า และมีโอกาสถูกล็อคอินสำหรับแพลตฟอร์มที่ไม่ใช่โอเพ่นซอร์ส

ตัวอย่าง BaaS บางส่วน:

  • Back4app
  • AWS Amplify
  • Firebase
  • Parse
  • Cloudkit
  • Backendless

กระบวนการดีพลอย Node.js

ในส่วนนี้ของบทความ เราจะมาดู Back4app และเรียนรู้วิธีการสร้างและดีพลอยแอปพลิเคชัน Node JS

Back4app คืออะไร?

Back4app เป็นหนึ่งในโซลูชั่น Backend as a Service (BaaS) แบบโอเพ่นซอร์สที่ดีที่สุด ในตลาด มันมีคุณสมบัติและประโยชน์มากมายสำหรับผู้ใช้ ช่วยให้นักพัฒนาสามารถสร้างเว็บและแอปมือถือได้อย่างรวดเร็ว ด้วยการใช้ Back4app คุณจะสามารถมุ่งเน้นที่ธุรกิจหลักได้แทนกังวลเกี่ยวกับส่วนหลังหรือโครงสร้างพื้นฐาน

โซลูชั่นนี้มาพร้อมแดชบอร์ดที่ใช้งานง่ายและอุดมด้วยคุณสมบัติ รวมถึงอินเทอร์เฟซบรรทัดคำสั่ง (CLI) พวกเขายังมี SDK สำหรับเครื่องมือยอดนิยมทั้งหมดของคุณ เช่น Flutter, React Native, Node.js, Angular, Android, iOS และอื่น ๆ!

คุณสมบัติหลักของ Back4app ได้แก่:

  • ฐานข้อมูลลักษณะคล้ายสเปรดชีต
  • REST และ GraphQL APIs
  • Live Queries
  • การยืนยันตัวตน (รวมถึงการยืนยันตัวตนผ่านโซเชียลมีเดีย)
  • โฮสติงที่สามารถสเกลได้
  • การแจ้งเตือนพุชและอีเมล

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคุณสมบัติเหล่านี้ โปรดดู คุณสมบัติของ Back4app

Back4app มีโมเดลราคาเรียบง่ายและตรงไปตรงมาที่สามารถตอบสนองแอปทุกขนาดได้ พวกเขามีแผนฟรีที่ใจบุญ (ไม่ต้องใช้บัตรเครดิต) ที่เหมาะสำหรับการสร้างต้นแบบและทดสอบแพลตฟอร์ม ประกอบด้วย:

  • 25k คำขอ
  • พื้นที่เก็บข้อมูล 250 MB
  • การถ่ายโอนข้อมูล 1 GB
  • พื้นที่เก็บไฟล์ 1 GB

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดราคา Back4app โปรดดูที่ หน้าการกำหนดราคา

บทนำโปรเจกต์

เรากำลังจะเขียนโค้ดและดีพลอยแอป TODO แบบง่าย แอปเว็บนี้จะรองรับการดำเนินการ CRUD เบื้องต้น – สร้าง อ่าน อัพเดท และลบ เราจะเขียนด้วย Node.js โดยใช้เฟรมเวิร์ก Express การจัดเก็บข้อมูลจะถูกจัดการโดย Parse และเราจะใช้ Twig เป็นเอนจินสำหรับเทมเพลต

คลิกที่นี่เพื่อดูแอปที่ได้ดีพลอยแล้ว!

ข้อกำหนดเบื้องต้น:

  • ความเข้าใจพื้นฐานเกี่ยวกับ Node.js
  • ความเข้าใจพื้นฐานเกี่ยวกับ Express
  • ประสบการณ์กับเอนจินสำหรับเทมเพลต
  • ความเข้าใจพื้นฐานเกี่ยวกับฐานข้อมูลและ ParseJS

Back4app CLI

ขั้นตอนต่อไปนี้จะต้องการให้คุณมีบัญชี Back4app หากคุณมีแล้ว เข้าสู่ระบบ มิฉะนั้นให้สมัครบัญชีฟรี

Back4app CLI คืออินเทอร์เฟซบรรทัดคำสั่งที่ช่วยให้คุณสามารถโต้ตอบกับแพลตฟอร์ม Back4app ได้

ในการติดตั้งบน Mac/Linux ให้รัน:

$ curl https://raw.githubusercontent.com/back4app/parse-cli/back4app/installer.sh | sudo /bin/bash

คำสั่งนี้จะดาวน์โหลด CLI เวอร์ชันล่าสุดและเก็บไว้ที่ /usr/local/bin/b4a

สำหรับระบบปฏิบัติการอื่น ๆ โปรดดูที่ เอกสารอย่างเป็นทางการ

ในการใช้ CLI คุณต้องยืนยันตัวตนด้วยบัญชีของคุณ เพื่อทำเช่นนั้น คุณต้องสร้าง account key ก่อน ไปที่แดชบอร์ด Back4app ของคุณและคลิกที่ชื่อผู้ใช้ (มุมขวาบนของหน้าจอ) จากนั้นเลือก “Account Keys”:

Back4app account keys

เพื่อเพิ่ม account key ใหม่ ให้ใส่ชื่อกุญแจที่กำหนดเองแล้วกด “+” จดจำกุญแจนั้นไว้เพราะเราจะต้องใช้ในขั้นตอนถัดไป:

Back4app account keys

หลังจากสร้างกุญแจสำเร็จแล้ว กลับไปที่เทอร์มินัลและรัน:

$ b4a configure accountkey

Input your account key or press ENTER to generate a new one.       
NOTE: on pressing ENTER we'll try to open the url:                 
        "http://dashboard.back4app.com/classic#/wizard/account-key"
in default browser.
Account Key: <YOUR_GENERATED_ACCOUNT_KEY>
Successfully stored account key for: "<YOUR_EMAIL>".

เพื่อตรวจสอบว่าการยืนยันตัวตนทำงาน ลองแสดงรายการแอปของคุณ:

$ b4a list

These are the apps you currently have access to:

หากบัญชีของคุณใหม่อย่างฉัน แอปพลิเคชันจะไม่ถูกแสดงรายการเลย

สร้างแอป

ต่อไปเรามาสร้างแอป Back4app กัน

รัน:

$ b4a new

Would you like to create a new app, or add Cloud Code to an existing app?
Type "(n)ew" or "(e)xisting": n
Please choose a name for your Parse app.
Note that this name will appear on the Back4App website,
but it does not have to be the same as your mobile app's public name.
Name: nodejs-back4app
Awesome! Now it's time to set up some Cloud Code for the app: "nodejs-back4app",
Next we will create a directory to hold your Cloud Code.
Please enter the name to use for this directory,
or hit ENTER to use "nodejs-back4app" as the directory name.

Directory Name:
You can either set up a blank project or create a sample Cloud Code project
Please type "(b)lank" if you wish to setup a blank project, otherwise press ENTER: 
Successfully configured email for current project to: "<YOUR_EMAIL>"
Your Cloud Code has been created at /dev/nodejs-back4app.
  1. สร้างแอปใหม่หรือใช้แอปที่มีอยู่: new
  2. เลือกชื่อแอป: เลือกชื่อที่กำหนดเอง
  3. ชื่อไดเรกทอรี: กด ENTER
  4. โปรเจกต์ Cloud Code ว่างหรือแบบตัวอย่าง: กด ENTER

คำสั่งนี้จะสร้างไดเรกทอรีด้วยโครงสร้างดังต่อไปนี้:

nodejs-back4app/
├── cloud/
│   └── main.js
├── public/
│   └── index.html
├── .parse.local
└── .parse.project
  1. cloud คือไดเรกทอรีสำหรับโค้ดและฟังก์ชันบนคลาวด์ทั้งหมด
  2. public คือไดเรกทอรีสำหรับไฟล์สาธารณะ เช่น รูปภาพ สไตล์ชีต และอื่น ๆ
  3. .parse.local และ .parse.project ใช้สำหรับเก็บการกำหนดค่าของ Parse

ลบไฟล์ main.js และ index.html ออก เพราะเราไม่ต้องการใช้งานพวกมัน

เว็บโฮสติ้ง

เนื่องจากเรากำลังสร้างแอป Node.js เราจำเป็นต้องเปิดใช้เว็บโฮสติ้งสำหรับ Back4app เพื่อโฮสต์แอปของเราและทำให้มันเข้าถึงได้จากอินเทอร์เน็ต

ในการเปิดใช้งานฟีเจอร์เว็บโฮสติ้ง ไปที่แดชบอร์ด Back4app ของคุณ เลือกแอปของคุณ คลิก “App Settings” ทางด้านซ้ายของหน้าจอ จากนั้น “Server Settings” ค้นหา “Webhosting and Custom Domains” แล้วคลิกที่ “Settings” อีกครั้ง

คลิก “Activate Back4app Hosting” และเลือกชื่อซับโดเมน ฉันจะใช้ nodejsback4app:

Back4app web hosting

สุดท้าย คลิก “Save”

แอปของคุณจะสามารถเข้าถึงได้ที่:

https://<your_subdomain>.b4a.app/

คุณสามารถเชื่อมโยงโดเมนเองกับเว็บแอปของคุณได้ด้วย!

Express กับฟังก์ชัน Cloud Code

ต่อไป มาทำงานกับโค้ดจริงกัน

เปลี่ยนไดเรกทอรีไปที่ cloud และสร้างไฟล์ package.json ภายใน:

Back4app ใช้ไฟล์นี้ในการดาวน์โหลดโมดูลผ่าน npm เราเพิ่ม body-parser เพราะเราจะต้องใช้มันในการแยกวิเคราะห์คำขอในภายหลัง

ต่อไป สร้างไฟล์อีกไฟล์ในโฟลเดอร์ cloud ชื่อ app.js:

ไฟล์นี้ใช้สำหรับเริ่มต้นและกำหนดค่า Express เรากำหนดจุดสิ้นสุดหนึ่งที่จะใช้เป็นการตรวจสอบความถูกต้องในขั้นตอนถัดไป ตามที่คุณเห็นเราไม่จำเป็นต้องกำหนด app หรือเรียกใช้ dependencies ใดๆ เพราะ Back4app ทำสิ่งเหล่านี้ให้อัตโนมัติ

ต่อไป ดีพลอยแอป:

$ b4a deploy

Uploading source files
Uploading recent changes to scripts...
Finished uploading files
New release is named v1 (using Parse JavaScript SDK v2.2.25)

คำสั่งนี้จะอัปโหลดไฟล์ซอร์สของคุณไปยัง Back4app กำหนดค่าทุกอย่าง และทำให้แอปของคุณพร้อมใช้งานที่ซับโดเมนที่คุณเลือกในส่วนก่อนหน้า

เพื่อตรวจสอบว่ามันทำงาน ลองเปิดเว็บเบราเซอร์ที่คุณชื่นชอบและไปที่แอปของคุณ:

https://<your_subdomain>.b4a.app/

# ตัวอย่าง
https://nodejsback4app.b4a.app/

คุณควรได้รับการตอบสนองดังนี้:

ทำได้ดี!

ในส่วนต่อไป เราจะเริ่มทำงานกับแอป TODO จริง

ฐานข้อมูลกับ ParseJS

มากำหนดโมเดลฐานข้อมูลสำหรับแอป TODO กัน

ไปที่แดชบอร์ด Back4app และเลือก “Database” ทางด้านซ้ายของหน้าจอ หลังจากนั้นคลิก “Create a new class” ตั้งชื่อ Task และตรวจสอบให้แน่ใจว่าได้ติ๊ก “Public Read and Write enabled”:

Back4app create new class

ต่อไป เพิ่มคอลัมน์ดังต่อไปนี้:

+-----------+-------------+---------------+----------+
| Data type | Name        | Default value | Required |
+-----------+-------------+---------------+----------+
| String    | name        | <leave blank> | yes      |
+-----------+-------------+---------------+----------+
| String    | description | <leave blank> | no       |
+-----------+-------------+---------------+----------+
| Boolean   | isDone      | false         | yes      |
+-----------+-------------+---------------+----------+

ตรรกะแอป

แอปนี้จะมีจุดสิ้นสุดดังต่อไปนี้:

  1. / แสดงรายการงาน
  2. /create สร้างงาน
  3. /<ID> แสดงรายละเอียดงาน
  4. /<ID>/delete ลบงาน
  5. /<ID>/toggle สลับสถานะงาน — ทำแล้ว/ยังไม่ทำ

มาสร้างจุดสิ้นสุดเหล่านี้กัน

เพื่อทำให้โค้ดบนคลาวด์ของเราง่ายต่อการบำรุงรักษา เราจะแยกออกเป็นสองไฟล์

  1. app.js — เริ่มต้นและกำหนดค่าเซิร์ฟเวอร์ Express
  2. routes.js — กำหนดจุดสิ้นสุดและตรรกะของพวกมัน

แนวทางที่ดีกว่าในการสร้างเว็บแอปสมัยใหม่คือการใช้รูปแบบสถาปัตยกรรม Model-View-Controller (MVC) การเริ่มต้นที่ดีด้วย Express คือการใช้ express-generator

ไปแทนที่เนื้อหาใน app.js ด้วยสิ่งต่อไปนี้

  1. เราได้ตั้ง Twig ให้เป็นเอนจินมุมมองเริ่มต้น
  2. จุดสิ้นสุดไม่ได้ถูกกำหนดในไฟล์นี้อีกต่อไป แต่จะอยู่ใน routes.js

ต่อไป สร้าง routes.js และใส่โค้ดต่อไปนี้

เราได้กำหนดจุดสิ้นสุดทั้งหมดที่กล่าวถึงข้างต้นและใช้ Parse ในการจัดการและเก็บข้อมูล ตามที่คุณเห็นจุดสิ้นสุดทั้งหมดเป็นแบบ async เนื่องจากเราต้องรอให้ Parse ตอบกลับ นอกจากนี้ โค้ดส่วนใหญ่ยังถูกห่อหุ้มด้วยบล็อก try-catch เผื่อเกิดข้อผิดพลาด

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ ParseJS โปรดดูที่ JavaScript Guide

ต่อไป เรามาเชื่อมจุดสิ้นสุดกับเทมเพลตมุมมองกัน

สร้างโฟลเดอร์ views ภายในโฟลเดอร์ cloud ดาวน์โหลดไฟล์เทมเพลตจาก repo บน GitHub และวางลงในไดเรกทอรี views

โครงสร้างไดเรกทอรีสุดท้ายของคุณควรมีลักษณะดังนี้:

nodejs-back4app/
├── cloud/
│   ├── views/
│   │   ├── base.twig
│   │   ├── create.twig
│   │   ├── error.twig
│   │   ├── index.twig
│   │   └── task.twig
│   ├── app.js
│   ├── routes.js
│   └── package.json
├── public
├── parse.local
└── parse.project

สุดท้าย เพิ่ม twing ใน package.json เพื่อเปิดใช้งานการรองรับ Twig:

ดีพลอยแอป:

$ b4a deploy

Uploading source files
Uploading recent changes to scripts...
Finished uploading files
New release is named v2 (using Parse JavaScript SDK v2.2.25)

และคุณก็เสร็จสิ้นแล้ว รอสักครู่แล้วเข้าไปดูเว็บแอปเพื่อให้แน่ใจว่าทุกอย่างทำงาน

ไฟล์สาธารณะ

ตามที่กล่าวไว้ในส่วนก่อนหน้า Back4app จะให้บริการไฟล์ที่อยู่ในโฟลเดอร์ public โดยอัตโนมัติ ในการใช้งานในเทมเพลตของคุณ คุณต้องปรับการตั้งค่า Express เล็กน้อย

ไปที่ app.js และเพิ่มบรรทัดต่อไปนี้:

จากนั้นคุณสามารถอ้างอิงไฟล์สาธารณะในเทมเพลตของคุณโดยใช้เส้นทางสัมพัทธ์:

<img src="/back4app.png" alt="Back4app Logo">

จะแสดงรูปภาพที่อยู่ใน public/back4app.png

สรุป

Node เติบโตและพัฒนาขึ้นอย่างต่อเนื่องตั้งแต่เปิดตัวในปี 2009 มันเป็นหนึ่งในเครื่องมือที่ดีที่สุดที่ช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันที่สามารถสเกลได้และมีประสิทธิภาพสูงได้อย่างง่ายดาย

แอป Node สามารถดีพลอยบนโซลูชั่นต่าง ๆ เช่น IaaS, PaaS และ SaaS แต่ละแบบมีข้อดีข้อเสียที่ควรพิจารณาเมื่อเลือกตัวเลือกการดีพลอย

หนึ่งในวิธีที่ง่ายที่สุดในการดีพลอยแอปพลิเคชัน Node คือการใช้ Back4app – โซลูชั่น BaaS แบบโอเพ่นซอร์สที่มีคุณสมบัติมากมาย Back4app ยอดเยี่ยมเพราะช่วยให้คุณมุ่งเน้นไปที่สิ่งที่สำคัญในขณะที่มอบหมายส่วนหลังและการดีพลอยออกไป

รับซอร์สโค้ดสุดท้ายได้จาก repo back4app-nodejs

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับตัวเลือกการโฮสต์ Node.js โปรดดูที่ วิธีการโฮสต์แอป Node.JS โดยใช้คอนเทนเนอร์


Leave a reply

Your email address will not be published.