บทนำ

1

แปลไปแล้ว

ในบทนี้ คุณจะได้

  • เรียนรู้ว่าอะไรทำให้ Meteor พิเศษกว่าเฟรมเวิร์กอื่น
  • อ่านเรื่องราวและที่มาของหนังสือเล่มนี้
  • เข้าใจการจัดรูปแบบของหนังสือเล่มนี้
  • ลองคิดในใจดู สมมติว่าตอนนี้คุณกำลังเปิดโปรแกรมจัดการไฟล์ขึ้นมา 2 หน้าต่าง แต่อยู่ที่โฟลเดอร์เดียวกัน

    คราวนี้ลองลบไฟล์ในโฟลเดอร์นั้นจากหน้าต่างหนึ่งดูสิ ไฟล์นั้นหายไปจากอีกหน้าต่างด้วยหรือเปล่า?

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

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

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

    แต่ในตอนนี้เฟรมเวิร์กและเทคโนโลยีรุ่นใหม่ๆอย่าง Meteor กำลังท้าทายแนวคิดเดิม ด้วยการทำให้เว็บตอบสนองต่อข้อมูลและเหตุการณ์ต่างๆ ได้ทันที (reactive and real-time)

    Meteor คืออะไร

    Meteor เป็นแพลตฟอร์มที่ต่อยอดจาก Node.js เพื่อการสร้างเว็บแอพแบบเรียลไทม์ มันทำงานอยู่ระหว่างฐานข้อมูล (database) และส่วนติดต่อผู้ใช้ (user interface) โดยทำให้ข้อมูลทั้งสองฝั่งนั้นสอดคล้องกันอยู่เสมอ

    การพัฒนาต่อยอดจาก Node.js ทำให้ Meteor ใช้ภาษาจาวาสคริปต์ได้ทั้งบนฝั่งไคลเอนต์และเซิร์ฟเวอร์ ยิ่งไปกว่านั้น Meteor ยังสามารถใช้โค้ดร่วมกันได้ทั้งสองฝั่งอีกด้วย

    ผลลัพธ์ที่ได้ก็คือ แพลตฟอร์มที่ทรงพลังแต่เรียบง่าย ลดขั้นตอนที่ยุ่งยากรวมทั้งอุปสรรคต่างๆในการพัฒนาเว็บแอปพลิเคชันออกไป

    ทำไมต้องเป็น Meteor

    ทำไมคุณถึงควรเรียน Meteor มากกว่าเฟรมเวิร์กตัวอื่นๆ ล่ะ … เราเชื่อว่าเหตุผลสำคัญที่สุดก็คือ Meteor เป็นเฟรมเวิร์กที่เรียนรู้ได้ง่าย ทั้งยังมีจุดเด่นอีกหลายอย่างที่เรายังไม่ได้พูดถึง

    Meteor ช่วยให้คุณสามารถสร้างเว็บแอปพลิเคชันแบบเรียลไทม์ และส่งมันขึ้นไปอยู่บนเว็บได้ในเวลาเพียงแค่ไม่กี่ชั่วโมง (ใช้เวลาน้อยกว่าเฟรมเวิร์กตัวอื่นๆ มาก) ยิ่งถ้าคุณเคยพัฒนาเว็บในฝั่ง front-end มาก่อน และพอคุ้นเคยกับภาษาจาวาสคริปต์มาบ้าง คุณก็ไม่มีความจำเป็นต้องเรียนรู้ภาษาใหม่อะไรอีก

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

    ทำไมต้องเป็นหนังสือเล่มนี้ด้วย

    สองสามปีที่ผ่านมา เราได้ร่วมงานในโครงการที่ใช้ Meteor หลายตัว ตั้งแต่เว็บจนถึงโมบายล์แอพ ทั้งในรูปแบบธุรกิจและโอเพ่นซอร์ส

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

    โดยเราจะสอนให้คุณสร้างเว็บข่าวสังคมแบบง่ายๆ คล้ายกับ Hacker news หรือ Reddit ที่เราเรียกว่า Microscope (ตั้งชื่อตามพี่ใหญ่ Telescope ที่เป็นแอพ Meteor แบบโอเพ่นซอร์ส) ในระหว่างการสร้าง เราก็จะแนะนำส่วนประกอบต่างๆ ของ Meteor ไปทีละอย่าง เช่น ระบบบัญชีผู้ใช้ (user accounts), คอลเลคชั่น (collections), การจัดเส้นทาง (routing) ฯลฯ

    หนังสือเล่มนี้เหมาะสำหรับใคร

    เป้าหมายหนึ่งที่เราตั้งใจไว้ตอนที่เขียนหนังสือเล่มนี้ก็คือ ให้เนื้อหาเป็นกันเอง และเข้าใจได้ง่าย แม้ว่าคุณจะไม่เคยใช้ทั้ง Meteor, Node.js, และเฟรมเวิร์ก MVC ต่างๆ หรือไม่เคยแม้กระทั่งเขียนโค้ดฝั่งเซิร์ฟเวอร์มาก่อนเลย คุณก็ยังสามารถอ่านและทำตามที่หนังสือบอกได้

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

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

    รู้จักทีมผู้เขียน

    เพื่อคลายความสงสัยและให้คุณรู้จักเรามากขึ้น ข้อมูลตรงนี้ก็คือประวัติย่อๆ ของพวกเราทั้งคู่

    Tom Coleman เป็นหนึ่งใน Percolate Studio, สตูดิโอรับทำเว็บ ที่เน้นคุณภาพและการใช้งาน เขาเป็นหนึ่งในผู้ดูแลระบบ Atmosphere ที่เป็นแหล่งรวมแพ็คเกจของ Meteor และยังเป็นมันสมองผู้อยู่เบื้องหลังโครงการโอเพนซอร์สที่ใช้ Meteor อีกหลายตัว (เช่น Iron Router)

    Sacha Greif เคยร่วมงานกับ startup ต่างๆ เช่น Hipmunk และ RubyMotion ในฐานะนักออกแบบผลิตภัณฑ์และเว็บไซต์ โดยเขาเป็นทั้งผู้สร้าง Telescope และ Sidebar (ต่อยอดจาก Telescope), และยังเป็นผู้ก่อตั้ง Folyo อีกด้วย

    บทเรียนหลัก และบทแทรก

    เพื่อให้หนังสือเล่มนี้เป็นประโยชน์ทั้งกับมือใหม่หัดใช้ Meteor และโปรแกรมเมอร์ขั้นเทพ เราจึงแบ่งบทเรียนออกเป็นสองแบบ คือ บทเรียนหลัก (บทที่ 1 ถึง 14) และบทเแทรก (บทที่ลงท้ายด้วย 0.5)

    ในบทเรียนหลัก เราจะสอนคุณสร้างแอพ โดยอธิบายเฉพาะขั้นตอนที่สำคัญๆ และไม่ลงรายละเอียดมากเกินไป เพื่อให้คุณเริ่มเขียนโค้ดได้เร็วที่สุด

    ส่วนในบทแทรก เราจะอธิบายเจาะลึกถึงความสลับซับซ้อนของ Meteor เพื่อให้คุณมีความเข้าใจถึงการทำงานที่เกิดขึ้นจริงๆ

    ถ้าคุณเป็นมือใหม่ จะข้ามบทแทรกไปก่อนก็ได้ แล้วค่อยกลับมาอ่านทีหลังเมื่อคุณเริ่มคุ้นเคยกับ Meteor แล้ว

    โค้ดสำเร็จ และหน้าทดสอบ

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

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

    คอมมิท 11-2

    Display notifications in the header.

    แต่คุณก็ต้องจำไว้ว่า ถึงแม้เราได้เตรียมโค้ดตัวอย่างที่สำเร็จไว้ให้แล้ว คุณก็ไม่ควรใช้คำสั่ง git checkout เพื่อข้ามไปยังขั้นตอนถัดไปทันที เพราะว่าคุณจะเรียนรู้ได้ดีขึ้น ถ้ายอมเสียเวลาป้อนโค้ดด้วยตัวเอง !

    แหล่งข้อมูลอื่นๆ

    ถ้าคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับคุณลักษณะเฉพาะของ Meteor จุดเริ่มต้นที่ดีที่สุดก็คือ หน้าเอกสารของ Meteor

    นอกจากนี้ เราขอแนะนำเว็บบอร์ดที่ Stack Overflow ซึ่งเป็นแหล่งรวมข้อมูลวิธีแก้ไขปัญหาและคำถามต่างๆของ Meteor เอาไว้ และที่ #meteor IRC channel ในกรณีที่คุณต้องการความช่วยเหลือแบบสดๆ

    จำเป็นต้องใช้ Git มั้ย

    เราแนะนำว่าควรใช้ ถึงแม้ว่าหนังสือเล่มนี้ไม่ได้เจาะจงว่าคุณจำเป็นต้องใช้ Git เป็น ถึงจะสร้างแอพได้

    ถ้าคุณต้องการเรียนรู้ Git อย่างรวดเร็ว เราแนะนำหน้าเว็บ Git Is Simpler Than You Think ของ Nick Farina

    หรือถ้าคุณเป็นมือใหม่ เราแนะนำให้คุณใช้แอพ GitHub บนเครื่อง Mac เพื่อทำสำเนาและจัดการ repository ได้ โดยไม่ต้องยุ่งกับ command line เลย หรือจะใช้ SourceTree ที่รันได้ทั้ง Mac และ Windows ก็ได้ ซึ่งสองตัวนี้เป็นโปรแกรมที่ดาวน์โหลดได้ฟรี

    พูดคุยกับเรา