ใช้กรอบเช่น Backbone [ปิด]


24

ขณะนี้ฉันมีหน้าhttp://proctors.org/tvซึ่งขับเคลื่อนด้วยหลายมุมมองและสิ่งที่แนบมากับ jQuery มากมายและสปาเก็ตตี้ JavaScript ที่ถูกแฮ็กเข้าด้วยกันและฉันอยากจะล้างมัน ฉันเข้าใจว่า Javascript "MVC" เฟรมเวิร์กรุ่นใหม่ใช้ประโยชน์จากเทมเพลตและไม่เก็บข้อมูลทั้งหมดไว้ใน DOM อย่างที่คุณอาจใช้ jQuery

ฉันเชื่อว่าคุณจะใช้บางอย่างเช่นบริการและ / หรือมุมมองเป็นแบ็กเอนด์โดยมีแบ็กโบนอยู่ด้านหน้า

มีโครงการทำเพื่อBackboneและฉันจำได้ว่ามี BoF หรือเซสชันที่ DrupalCon Denver เกี่ยวกับเรื่องนี้ ...

ฉันหวังที่จะค้นพบว่ามันคุ้มค่ากับเวลาของฉันที่จะลองและเขียนมันใหม่ในกรอบใหม่หรือแค่ทำความสะอาดสิ่งที่ฉันมีที่นี่


4
คำถามคืออะไรกันแน่ หากคำถามคือ "ใครบ้างที่ใช้กรอบงาน Javascript เช่น Backbone หรือ Ember with Drupal?" มันเป็นโพลและไม่เป็นเช่นนั้นบนเว็บไซต์ Stack Exchange หากคุณมีคำถามเฉพาะเกี่ยวกับการใช้เฟรมเวิร์ก JavaScript หนึ่งในนั้นให้ถามคำถามนั้น
kiamlaluno

2
ฉันคิดว่าเขาถามว่ามีเฟรมเวิร์กจาวาสคริปต์ MVC ใดบ้างที่สามารถทำงานได้ดีพอกับเฟรมเวิร์กจาวาสคริปต์ของ Drupal ที่ว่าพวกเขาจะได้ผลงานน้อยกว่าแค่กลิ้งตัวเอง ดูเหมือนว่ายุติธรรมสำหรับฉัน - สำหรับบางสิ่งการที่ Drupal ดำเนินไปอย่างราบรื่นสวยงามสำหรับผู้อื่นมันต้องการแฮ็คมากคุณควรจะเขียนมันใหม่ตั้งแต่เริ่มต้นและดูเหมือนว่าจะถามคนที่พยายามแล้ว
user56reinstatemonica8

หากคุณต้องการบทช่วยสอนอย่างรวดเร็วเพื่อนำกระดูกสันหลัง + drupal มาทำงานคุณสามารถตรวจสอบโพสต์บล็อกของฉันpixelite.co.nz/article/ …
masterchief

ผู้ชายคนนี้มีจุดเริ่มต้นที่ดีสำหรับกระดูกสันหลังและ Drupal pixelite.co.nz/article/ …
Dan Walmsley

ฮ่าผู้ชายคนนั้นคือ @masterchief จากหนึ่งในคำตอบข้างต้น
Ryan Price

คำตอบ:


18

ฉันใช้ทั้ง Ember และ Backbone พร้อมกับ Drupal - แต่ไม่ใช่ในแบบที่คุณคิด

Ember และ Backbone เป็นทั้งเครื่องมือที่ดีในการสร้างเว็บแอปพลิเคชัน แต่ Drupal ไม่ใช่เครื่องมือที่ดีที่จะใช้ร่วมกับพวกเขา สิ่งที่คุณปรารถนาเมื่อคุณสร้างแอปพลิเคชันเว็บคือสิ่งที่เบาและรวดเร็ว คุณต้องการให้เร็วเพื่อให้ผู้ใช้ของคุณรู้สึกว่าเวลาตอบสนองทันที คุณต้องการให้มันเบาเพื่อทำให้สเกลดีขึ้น Drupal ไม่เร็ว - Bootstrap แบบเต็มของ Drupal ใช้เวลานาน (เมื่อเทียบกับตัวเลือกอื่น ๆ มากมาย) หากคุณต้องการทำทั้งหมดคือให้ REST API สำหรับเว็บแอปของคุณ Drupal คือ PHP ซึ่งทำให้ RAM ค่อนข้างหิว จำกัด จำนวนผู้ใช้พร้อมกัน

ดังนั้นถ้า Drupal แย่ขนาดนี้ทำไมต้องใช้มัน?

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

แทนที่จะใช้ Drupal เพื่อสร้าง REST API ที่ webapp ต้องการ - ฉันใช้ Node.js เพื่อสร้าง REST API ที่แท้จริงและการตรวจสอบอื่น ๆ AJAX เรียกว่า webapp ที่จำเป็นในการสร้าง Node.js เก่งในการทำสิ่งนี้ มันสว่างอย่างรวดเร็ว (เวลาตอบสนองต่ำสุดที่ 30ms สำหรับรายการของวัตถุ) นอกจากนี้ยังมีน้ำหนักเบามากเนื่องจาก JavaScript บนเซิร์ฟเวอร์ใช้การทำงานแบบอะซิงโครนัสเซิร์ฟเวอร์ Node.js จึงสามารถจัดการกับผู้ใช้พร้อมกันหลายพันคนที่ PHP สามารถจัดการได้ 100 คนนอกจากนั้น - เนื่องจาก Node.js เป็น JavaScript คุณสามารถนำมาใช้ใหม่ได้มาก ของรหัสเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ คุณสามารถเขียนรหัสตรวจสอบตัวเดียวกันแทนการใช้ฝั่งไคลเอ็นต์ทั้งใน JavaScript และฝั่งเซิร์ฟเวอร์ใน PHP หากคุณกำลังจะไป Drupal con ในMünichในอีกไม่กี่สัปดาห์คุณควรพิจารณาดูการนำเสนอ node.js.

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


อัพเดท Drupal 8

ดังนั้นด้วยการเปิดตัว Drupal 8 บางอย่างที่กล่าวมาข้างต้นยังคงเป็นจริง แต่ไม่ขยายตัวเหมือนเมื่อก่อน Drupal 8 เป็นเหมือน Drupal 7 ไม่ใช่เครื่องมือที่มีน้ำหนักเบาเช่น Node.js, Rails, Django เป็นต้นเนื่องจากแอป JavaScript ส่วนใหญ่ใช้บริการที่หลากหลายคุณจึงควรพิจารณาว่า Drupal เป็นเครื่องมือที่ดีที่สุดสำหรับสิ่งนี้หรือไม่

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

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


แนวทางที่น่าสนใจ คุณกำลังใช้drupal.org/project/nodejsหรือคุณกำลังแปลงอินเทอร์เฟซของคุณเองไปยัง Drupal DB หรือไม่?
mpdonadio

@ googletorp ฉันทำงานกับ phusion ผู้โดยสารและแม้เธอไม่สามารถทำงานได้ดีขึ้นโดยไม่ต้องแคชและการเพิ่มประสิทธิภาพเซิร์ฟเวอร์และภาษาสคริปต์ฝั่งเซิร์ฟเวอร์ทั้งหมด (ยกเว้น js) มีปัญหาการบล็อกจำนวนพอสมควร Infact ฉันเองเปลี่ยนจาก ruby ​​เป็น php เนื่องจากการสนับสนุนประสิทธิภาพเฉพาะในชุมชนโอเพ่นซอร์สและใช้งานง่ายมาก โหนดจะยังคงเร็วกว่าเสมอเมื่อเทียบกับภาษาอื่น ๆ
มิ้นต์

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

@Minty มีแพ็คเกจผู้ช่วยเหลือสำหรับการรวมเข้ากับ Drupal ใน Nodejs: github.com/mikl/node-drupalการจัดการเซสชันที่เกิดขึ้นจริงนั้นขึ้นอยู่กับว่าคุณทำอย่างไร CORS เป็นต้น แต่ฉันมักจะส่ง Drupal session_id คุกกี้หรือในส่วนหัวของคำขอ
googletorp

ฉันเพิ่งอ่านเอกสาร Backbone ที่ยอดเยี่ยมนี้github.com/kjbekkelund/writings/blob/master/published/…และคิดว่า man backbone เป็นวิธีที่ยอดเยี่ยมในการจัดระเบียบ JavaScript ของคุณและใช้กับการโทรกลับ AJAX ผ่านระบบการจัดเส้นทาง ทำไมไม่รวมกับ Drupal เนื่องจาก Drupal อาศัยลักษณะการจัดเส้นทางเดียวกัน
AlxVallejo

6

ฉันเพิ่งเริ่มพัฒนาแอปพลิเคชั่นแบ็คโบน + drupal ครั้งแรกของฉันและฉันสนุกกับมันมาก การใช้โมดูลBackboneพร้อมกับ Services, Services Views และไลบรารีที่ต้องการ โครงการค่อนข้างง่าย: ในการสร้างเนื้อหาแบบหมุนที่จัดการได้จำนวน 6 หน้าซึ่งแสดงข้อมูลต่าง ๆ พร้อมกับแถบเลื่อนข่าวเพิ่มเติมที่แสดงเนื้อหาที่แตกต่าง หน้านี้อยู่บนหน้าจอหลาย ๆ หน้าโดยไม่มีการโต้ตอบกับผู้ใช้ดังนั้นจำเป็นต้องมีความสามารถในการอัปเดตเนื้อหาส่วนหน้าโดยไม่ต้องรีเฟรชเบราว์เซอร์ ฉันคิดว่าสิ่งนี้เหมาะสมอย่างยิ่งในแอพ Drupal + Backbone ที่มี Drupal จัดการเนื้อหาและการควบคุมกระดูกสันหลังและการซิงค์กับฐานข้อมูล ฉันรวมอยู่ในjquery.cycle 2ซึ่งมี API ที่ยอดเยี่ยมและเหมาะสมกับรูปแบบการเขียนโปรแกรม MVC

ฉันสามารถดูว่าทำไมคนอาจจะติดจมูกของพวกเขาขึ้นที่ใช้ Drupal เป็นกรอบแบ็กเอนด์ แต่สำหรับโปรแกรมขนาดเล็กเช่น Drupal นี้มีน้ำหนักเบาและรวดเร็ว ฉันทำได้โดยเริ่มจากการติดตั้งเพียงเล็กน้อยและเลือกโมดูล contrib และ core อย่างระมัดระวัง ตอนนี้ฉันอยู่ที่โมดูลประมาณ 50 โมดูลโดยมีรหัส JS ต่ำกว่า 150 บรรทัดสำหรับแบ็คโบนและฉันก็ทำได้ดีมาก

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

สรุปแล้ว:

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


5

คำตอบพื้นฐานคือใช่บางคนใช้มัน ฉันยังไม่ได้ใช้ด้วยตัวเอง (ยังไม่พบโครงการที่เข้ากันได้ดี) แต่ขณะนี้มีกลุ่ม Drupalสำหรับมันและมันจะสอดคล้องกับWeb Services และ Context Core Initiativeซึ่งเป็นหนึ่งในDrupal 8 Initiatives . นอกจากนี้ยังมีเซสชั่นที่ DrupalCon มิวนิค 2012, Backbone.js ในส่วนหน้า

ฉันไม่ทราบว่ามันพร้อมสำหรับเวลาที่สำคัญ แต่ในความคิดของฉันมันคุ้มค่าที่จะสร้างหลักฐานของแนวคิดสำหรับถ้าคุณมีบางสิ่งที่สามารถได้รับประโยชน์จากมันและสามารถออกแบบด้าน JS ให้กับอินเตอร์เฟสและไม่ใช้งาน . ที่จะช่วยแยกการเปลี่ยนแปลงแบ็กเอนด์หากคุณตัดสินใจที่จะประกันตัว Drupal ไม่ว่าด้วยเหตุผลใดก็ตาม


1
โดยพื้นฐานแล้ว: Stackexchange เป็นสถานที่ที่ไม่ถูกต้องที่จะถามเกี่ยวกับเรื่องนี้เนื่องจากมันเป็นกรณีพิเศษ ณ จุดนี้ เดินไปที่การอภิปรายกลุ่มใน gdo
paul-m

MPD ขอบคุณสำหรับลิงค์ไปยังกลุ่ม ฉันอาจจะติดตามที่นั่น ฉันได้ถามกลุ่มผู้ใช้แล้วซึ่งขึ้นอยู่กับว่าใครอยู่ที่นั่น ยังคงพยายามที่จะคิดออกเมื่อฉันควรเริ่มคำถามใน Stack Exchange ฉันคิดว่านี่จะมีคำตอบที่ถูกต้องมากกว่าหนึ่งข้อดังนั้นมันจึงดูเหมือนว่าเหมาะสม
Ryan Price

3

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

https://github.com/kjbekkelund/writings/blob/master/published/understanding-backbone.md/


สวัสดี Craig ขอบคุณสำหรับลิงค์คุณมีทรัพยากรที่ใช้กับ Drupal โดยเฉพาะไหม ขอบคุณ
มิ้นต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.