ตรงกันข้ามกับความคิดเห็นที่เป็นที่นิยม Ember.js ไม่ใช่ 'วิธีที่มีน้ำหนักมากขึ้น' สำหรับ Backbone.js เป็นเครื่องมือประเภทต่างๆที่กำหนดเป้าหมายผลิตภัณฑ์ปลายทางที่แตกต่างกันโดยสิ้นเชิง จุดที่น่าสนใจของ Ember คือแอปพลิเคชันที่ผู้ใช้จะเปิดแอปพลิเคชันไว้เป็นเวลานานอาจจะทั้งวันและการโต้ตอบกับมุมมองของแอปพลิเคชันหรือข้อมูลที่อยู่เบื้องหลังจะทำให้เกิดการเปลี่ยนแปลงในลำดับชั้นของมุมมองอย่างลึกซึ้ง Ember มีขนาดใหญ่กว่า Backbone แต่ต้องขอบคุณExpires
, Cache-Control
เรื่องนี้เฉพาะในการโหลดครั้งแรก หลังจากใช้งานประจำวันสองวัน 30k พิเศษจะถูกบดบังด้วยการถ่ายโอนข้อมูลไม่ช้าก็เร็วหากเนื้อหาของคุณเกี่ยวข้องกับรูปภาพ
Backbone เหมาะอย่างยิ่งสำหรับแอปพลิเคชันที่มีสถานะจำนวนน้อยซึ่งลำดับชั้นของมุมมองยังคงค่อนข้างราบเรียบและผู้ใช้มีแนวโน้มที่จะเข้าถึงแอปไม่บ่อยหรือในช่วงเวลาสั้น ๆ รหัสของ Backbone จะยังคงสั้นและน่ารักเพราะทำให้สมมติฐานว่าข้อมูลที่สำรอง DOM จะถูกโยนทิ้งไปและทั้งสองรายการจะถูกรวบรวมหน่วยความจำ: https://github.com/documentcloud/backbone/issues/231#issuecomment-4452400ขนาดที่เล็กลงของ Backbone ทำให้เหมาะกับการโต้ตอบสั้น ๆ
แอพที่ผู้คนเขียนในเฟรมเวิร์กทั้งสองสะท้อนถึงการใช้งานเหล่านี้: แอพ Ember.js ประกอบด้วยเว็บแดชบอร์ดของ Square , Zendesk (อย่างน้อยก็คืออินเทอร์เฟซตัวแทน / การออกตั๋ว) และตัวกำหนดตารางเวลาของ Groupon : แอปพลิเคชันทั้งหมดที่ผู้ใช้อาจใช้เวลาทั้งวันในการทำงาน
ปพลิเคชัน Backbone มุ่งเน้นที่สั้น ๆ หรือการโต้ตอบแบบสบาย ๆ ที่มักจะส่วนเล็ก ๆ ของหน้าคงมีขนาดใหญ่: Airbnb , Khan Academy , แผนที่ของ Foursquare และรายการ
คุณสามารถใช้ Backbone เพื่อสร้างแอปพลิเคชันประเภทที่ Ember กำหนดเป้าหมาย (เช่นRdio ) โดยก) เพิ่มจำนวนรหัสแอปพลิเคชันที่คุณรับผิดชอบเพื่อหลีกเลี่ยงปัญหาเช่นการรั่วไหลของหน่วยความจำหรือเหตุการณ์ซอมบี้ (ฉันไม่แนะนำวิธีนี้เป็นการส่วนตัว) หรือ b) โดยการเพิ่มไลบรารีของบุคคลที่สามเช่นbackbone.marionetteหรือCoccyx - มีไลบรารีเหล่านี้จำนวนมากที่พยายามให้ฟังก์ชันการทำงานที่ทับซ้อนกันคล้าย ๆ กันและคุณอาจจะต้องประกอบเฟรมเวิร์กที่กำหนดเองซึ่งมีขนาดใหญ่กว่าและต้องใช้โค้ดกาวมากกว่า หากคุณเพิ่งใช้ Ember
ในที่สุดคำถาม "ที่จะใช้" มีสองคำตอบ
อันดับแรก "โดยทั่วไปแล้วฉันควรใช้อะไรในอาชีพของฉัน": ทั้งสองอย่างนี้เหมือนกับว่าคุณจะได้เรียนรู้เครื่องมือเฉพาะสำหรับงานที่คุณต้องการจะทำในอนาคต คุณไม่เคยถามว่า "กระดูกสันหลังหรือ D3?"; "กระดูกสันหลังหรือ Ember" เป็นคำถามที่โง่พอ ๆ กัน
ประการที่สอง "สิ่งที่ฉันควรใช้โดยเฉพาะในโครงการถัดไปของฉัน": ขึ้นอยู่กับโครงการ ทั้งสองจะสื่อสารกับเซิร์ฟเวอร์ Rails ได้อย่างง่ายดายเท่าเทียมกัน หากโปรเจ็กต์ถัดไปของคุณเกี่ยวข้องกับเพจต่างๆที่สร้างโดยเซิร์ฟเวอร์ที่เรียกว่า "เกาะแห่งความร่ำรวย" ที่ JavaScript จัดหาให้ใช้ Backbone หากโปรเจ็กต์ถัดไปของคุณดันการโต้ตอบทั้งหมดเข้าสู่สภาพแวดล้อมเบราว์เซอร์ให้ใช้ Ember