Meteor JavaScript framework ทำงานอย่างไร? [ปิด]


108

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

แต่สิ่งเหล่านี้ทำงานอย่างไรใน Meteor? ส่วนต่างๆของ Meteor เกี่ยวข้องกันอย่างไร?



8
นี่เป็นคำถามที่สร้างสรรค์และเป็นข้อเท็จจริง คำตอบที่ถูกต้องใด ๆ จะต้อง "ได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญเฉพาะด้าน" เห็นได้ชัดว่า casperOne เข้าใจผิดว่าคำถามหรือเกณฑ์ในการกำหนดคำถามนั้นไม่สร้างสรรค์
Charlie Flowers

3
แต่คำถามนี้มีแนวโน้มที่จะเรียกร้อง "การอภิปรายเพิ่มเติม" และไม่มี "คำตอบ" คำตอบ
durron597

9
@ durron597 ฉันคิดว่าคุณกำลังบอกว่าคำตอบสำหรับคำถามนั้นใหญ่มาก (แก้ไขฉันถ้าฉันเข้าใจผิด) ฉันเห็นแบบนั้น แต่มันไม่เหมือนกับการ "ไม่สร้างสรรค์" คำจำกัดความของ "ไม่สร้างสรรค์" ในสรุปสำเร็จรูปที่ปรากฏด้านล่างทำให้ชัดเจนว่าแท็ก "ไม่สร้างสรรค์" มีไว้สำหรับคำถามที่ไม่ตรงวัตถุประสงค์ คำถามนี้มีวัตถุประสงค์ 100% Meteor ทำงานในแบบที่มันทำงาน หากความคิดเห็นที่หลากหลายเริ่มปรากฏขึ้นที่นี่แสดงว่าทั้งหมดนี้ไม่ถูกต้อง
Charlie Flowers

@mplungjan ฉันไม่พบคำตอบใดที่น่าพอใจเพราะไม่มีคำตอบใดที่ตอบสนองหลักการของ Meteor ที่ว่า "Data on the Wire ได้อย่างเพียงพอ Meteor ไม่ส่ง HTML ผ่านเครือข่ายเซิร์ฟเวอร์จะส่งข้อมูลและให้ไคลเอ็นต์แสดงผล" หลักการแรกของหลักการ 7 ประการ
Alexander Mills

คำตอบ:


81

Meteorเป็นเฟรมเวิร์กที่อัปเดต HTML อย่างสวยงามแบบเรียลไทม์

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

ชิ้นส่วนสำคัญของ Meteor สามารถสร้างขึ้นเองได้โดยใช้ชิ้นส่วนเหล่านี้:

  • มีเทมเพลตที่อัปเดตโดยอัตโนมัติเมื่อโมเดลข้อมูลของคุณทำ โดยปกติจะทำได้โดยใช้Backbone.js , Ember.js , Knockout.jsหรือเครื่องมืออื่น

  • ส่งข้อความลูกค้า / เซิร์ฟเวอร์จะทำผ่านWebSocketsใช้สิ่งที่ต้องการsocks.jsหรือsocket.io

  • การเชื่อมต่อฝั่งไคลเอ็นต์กับ MongoDBนั้นยอดเยี่ยมมาก มันจำลองไดรเวอร์เซิร์ฟเวอร์ MongoDB ลงในไคลเอนต์ ขออภัยล่าสุดที่ฉันตรวจสอบพวกเขายังคงทำงานเพื่อรักษาความปลอดภัยการเชื่อมต่อฐานข้อมูลนี้

  • การชดเชยเวลาแฝงเป็นเพียงการอัปเดตโมเดลฝั่งไคลเอ็นต์ก่อนจากนั้นจึงส่งการอัปเดตไปยังเซิร์ฟเวอร์เซิร์ฟเวอร์

อาจจะมีชิ้นระเบียบอื่น ๆ ที่คุณสามารถหาได้ในดาวตกไซต์หรือบน GitHub


10
แม้ว่าจะดี แต่สิ่งนี้ไม่ได้ตอบคำถามจริงๆ
Prisoner ZERO

2
บางทีมันอาจจะตอบคำถามที่ซ่อนอยู่ในคำถาม
มูฮัมหมัด Umer

1
คำตอบนี้ระบุอย่างชัดเจนว่าอุกกาบาตทำการสื่อสารไคลเอนต์ / เซิร์ฟเวอร์ทั้งหมดโดยใช้ websockets ฉันคิดว่ายังตอบคำถาม
Usama Ahmed

ดาวตก js และโหนด js ยังคงเกี่ยวข้องใน v0.9 หรือไม่
yozawiratama

28

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

เพื่ออ่านเกี่ยวกับกรอบดาวตก JavaScriptโปรดดูคำตอบนี้โดยxer0x

ดังที่กล่าวไว้ในเอกสารของเซิร์ฟเวอร์ Meteor Meteor คือการนำดาวหางมาใช้ ดาวหางในทางกลับกันเป็นคู่ของAJAX

ในกรณีของ AJAX คุณมักจะร้องขอเมื่อลูกค้าเห็นว่าจำเป็นต้องทำเช่นนั้น หากต้องการดึงการอัปเดตจากเซิร์ฟเวอร์คุณจะต้องเรียกเซิร์ฟเวอร์เช่น ทุกๆ 5 วินาที

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

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


1
มีดาวตกและมีเซิร์ฟเวอร์ดาวตก ฉันมีความรู้สึกว่าคำถามเดิมเกี่ยวกับอดีตและคำตอบนี้เกี่ยวกับเรื่องหลัง? eor.comและmeteorserver.org
ile

2
ไม่สิ่งที่ Meteor.com เป็นรูปแบบขั้นสูงของดาวหาง โดยเฉพาะมันใช้การสำรวจระยะยาวคุณสามารถดูได้ในเครื่องมือ Chrome dev
wmil

1
@ile: ใช่มีเฟรมเวิร์ก JavaScript ที่เรียกว่าMeteor ( github.com/meteor/meteor ) และมีMeteor.jsซึ่งเป็นส่วนไคลเอนต์สำหรับ Meteor Server ( meteorserver.org/client-docs ) ฉันเชื่อว่านี่เป็นคำถามที่คลุมเครือเกินกว่าจะบอกได้ว่า OP ใดในใจจริงๆ
Tadeck

5
@ile จริงๆแล้วฉันสนใจในeor.com จริงๆแล้วฉันไม่รู้เกี่ยวกับ meteorserver.org ก่อนความคิดเห็นของคุณ
Jatin

2
เฟรมเวิร์ก Meteor.js ไม่ใช่เซิร์ฟเวอร์ HTTP ของดาวตก แม้จะมีตัวเลือกการตั้งชื่อที่ไม่ดีสำหรับคนที่สร้างกรอบ ดูรายละเอียดเพิ่มเติมได้ที่เว็บไซต์
xer0x

25

ความมหัศจรรย์ทั้งหมดของการอัปเดตข้อมูลสดเกิดขึ้นเนื่องจากระบบติดตามการพึ่งพา สามารถดูคำอธิบายวิธีการทำงานได้ที่ส่วนTrackerของเอกสาร


Meteor.deps ถูกเปลี่ยนชื่อเป็น Meteor.tracker ที่มาที่นี่
Benjamin Crouzier

ฉันคิดว่าสิ่งนี้ถูกย้ายไปที่docs.meteor.com/#/full/tracker
Nimir
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.