node.js เทียบกับ Meteor.js ต่างกันอย่างไร [ปิด]


88

ดังนั้นฉันจึงได้ยิน / อ่านเกี่ยวกับอุตุนิยมวิทยา js แบบฝึกหัดนี้ทำให้มันดูสปอร์ตมากในฐานะเฟรมเวิร์ก แต่ฉันก็ยังเป็นมือใหม่เมื่อพูดถึงการเขียนโปรแกรมบนเว็บ

ฉันพยายามมาตลอดเดือนครึ่งที่แล้วเพื่อเรียนรู้ node.js จริงๆและคิดว่ามันมารวมกันได้อย่างไร ฉันชอบความรวดเร็วและง่ายดายในการเริ่มต้นและใช้งานและชุมชนที่มาพร้อมกับมัน (ซึ่งเป็นตัวอย่างด้วยกรอบงานจำนวนมากที่คุณจะได้รับสำหรับ Node)

แต่ดาวตกล่ะ? ข้อดีที่แท้จริงของมันคืออะไรและอะไรคือความแตกต่าง? มีใครเริ่มเป็นผู้ใช้ node.js และ 'แปลง' หรือยังเป็นเฟรมเวิร์กใหม่ที่น่าสงสัยมากกว่านี้

คำตอบ:


159

การเปรียบเทียบแบบหลวม ๆ คือ "Meteor is to Node as Rails is to Ruby" เป็นเฟรมเวิร์กที่มีความคิดเห็นขนาดใหญ่ซึ่งใช้ Node บนเซิร์ฟเวอร์ โหนดเองเป็นเพียงเฟรมเวิร์กระดับต่ำที่มีฟังก์ชันสำหรับการส่งและรับคำขอ HTTP และดำเนินการ I / O อื่น ๆ

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

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

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


2
Meteor ได้ปรับปรุง "จุดบกพร่องร้ายแรง" ตั้งแต่ปีที่แล้วหรือไม่?
danorton

3
@danorton ใช่ฉันจะพูดอย่างนั้นแน่นอน สำหรับแอปพลิเคชั่นบางอย่างตอนนี้ Meteor ใช้งานได้ดีและมีความยินดีอย่างยิ่งที่จะพัฒนาด้วย
Trevor Burnham

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

12

Meteor เป็นเฟรมเวิร์กที่สร้างขึ้นบน node.js ใช้ node.js เพื่อปรับใช้ แต่มีความแตกต่างหลายประการ

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


4
เวอร์ชัน 0.6.0 ในขณะนี้มีการสนับสนุนโดยตรงแก่ NPM โมดูลmeteor.com/blog/2013/04/04/...
แม็กซ์ฮอดจ์

9

จุดแข็งของ Meteor อยู่ที่คุณสมบัติการอัปเดตแบบเรียลไทม์ซึ่งทำงานได้ดีกับแอปพลิเคชันโซเชียลบางตัวที่คุณเห็นในปัจจุบันซึ่งคุณจะเห็นการอัปเดตของทุกคนเกี่ยวกับสิ่งที่คุณกำลังทำอยู่ การอัปเดตเหล่านี้มุ่งเน้นไปที่การจำลองชุดย่อยของคอลเลกชัน MongoDB ที่อยู่ใต้ฝาครอบเป็นการอัปเดตฐานข้อมูล mini-mongo (ชุดย่อย MongoDB ฝั่งไคลเอ็นต์) บนเว็บเบราว์เซอร์ของคุณ ส่วนหลังเกี่ยวกับการอัปเดตการแสดงผลหลายรายการก็เป็นจุดอ่อนเช่นกัน หากคุณต้องการให้ UI ของคุณควบคุมเมื่อ UI รีเฟรช (เช่นหน้า jQuery AJAX แบบคลาสสิกที่คุณโหลด HTML และคุณควบคุมการโทร AJAX และการอัปเดต UI ทั้งหมด) คุณจะต้องต่อสู้กับกลไกนี้

Meteor ใช้ปลั๊กอิน Node.js ที่ดี (Handlebars.js, Spark.js, Bootstrap css และอื่น ๆ แต่ใช้กลไกการบรรจุหีบห่อของตัวเองแทน npm) ด้านล่างพร้อมกับ MongoDB สำหรับชั้นจัดเก็บข้อมูลที่คุณไม่ต้องทำ คิดเกี่ยวกับ. แต่บางครั้งคุณก็ต้องต่อสู้กับมันเช่นกัน ... เช่นหากคุณต้องการปรับแต่งธีม Bootstrap มันจะทำให้ลำดับการโหลดของไฟล์ responsive.css ของ Bootstrap ยุ่งเหยิงดังนั้นจึงไม่ตอบสนองอีกต่อไป (แต่อาจจะแก้ไขได้เองเมื่อ Bootstrap 3.0 เปิดตัวเร็ว ๆ นี้)

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


2
Meteor V0.6.0 + มีการรวม npm : eor.com/blog/2013/04/04/…
Manav Kataria
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.