Sử dụng một khung như Backbone [đã đóng]


24

Tôi hiện có một trang http://proctors.org/tv được điều khiển bởi một số lượt xem và tệp đính kèm với hàng tấn jQuery và spaghetti JavaScript được hack cùng nhau, và tôi muốn làm sạch nó. Tôi hiểu rằng các khung "MVC" Javascript mới hơn sử dụng các mẫu và không lưu trữ nghiêm ngặt tất cả dữ liệu trong DOM như bạn có thể làm với jQuery.

Tôi tin rằng bạn sẽ sử dụng một cái gì đó như Dịch vụ và / hoặc Lượt xem làm phụ trợ, với Backbone ở phía trước.

Có một dự án Do cho xương sống và tôi nhớ rằng có một BoF hoặc Phiên tại DrupalCon Denver về nó ...

Tôi hy vọng khám phá liệu có đáng để tôi dành thời gian để thử và viết lại điều này trong một khuôn khổ mới hay chỉ cần làm sạch những gì tôi có ở đây.


4
Câu hỏi chính xác là gì? Nếu câu hỏi là "Có ai sử dụng các khung Javascript như Backbone hoặc Ember với Drupal không?" sau đó là một cuộc thăm dò ý kiến ​​và vì thế không được chào đón trên các trang web Stack Exchange. Nếu bạn có một câu hỏi cụ thể về việc sử dụng một trong các khung JavaScript đó, thì hãy hỏi câu hỏi đó.
kiamlaluno

2
Tôi nghĩ rằng anh ta hỏi liệu có tồn tại bất kỳ khung javascript MVC nào có thể hoạt động đủ tốt với khung javascript riêng của Drupal không, họ sẽ dẫn đến công việc ít hơn là chỉ đơn giản là tự lăn. Có vẻ công bằng với tôi - đối với một số thứ, việc tiếp cận với Drupal diễn ra rất suôn sẻ, đối với những người khác, cần rất nhiều hack, bạn nên viết lại từ đầu - và có vẻ công bằng khi hỏi những người đã thử.
user56reinstatemonica8

Nếu bạn muốn có một hướng dẫn nhanh để có được xương sống + tăng tốc độ chạy, bạn có thể xem bài đăng trên blog của tôi pixelite.co.nz/article/ mẹo
masterchief

Anh chàng này có một điểm khởi đầu tốt cho xương sống và Drupal pixelite.co.nz/article/ triệt
Dan Walmsley

Anh chàng đó là @masterchief từ một trong những câu trả lời ở trên
Ryan Price

Câu trả lời:


18

Tôi đã sử dụng cả Ember và Backbone cùng với Drupal - nhưng không phải theo cách bạn nghĩ.

Ember và Backbone đều là những công cụ tốt để tạo một ứng dụng web - nhưng Drupal không thực sự là một công cụ tốt để sử dụng cùng với chúng. Những gì bạn mong muốn khi bạn xây dựng một ứng dụng web là một cái gì đó nhẹ và nhanh. Bạn muốn nó nhanh để có thể mang lại cho người dùng cảm giác nếu thời gian phản hồi ngay lập tức. Bạn muốn nó nhẹ để làm cho nó có quy mô tốt hơn. Drupal không nhanh - bootstrap đầy đủ của Drupal mất nhiều thời gian (so với rất nhiều tùy chọn khác) nếu tất cả những gì bạn muốn làm là cung cấp API REST cho ứng dụng web của bạn. Drupal là PHP, điều này cũng khiến RAM khá đói, hạn chế số lượng người dùng đồng thời.

Vì vậy, nếu Drupal rất tệ cho việc này tại sao lại sử dụng nó?

Bạn thực sự nên sử dụng Drupal cho những gì Drupal vượt trội - một CMS. Những gì tôi đã làm trong quá khứ với các dự án cần một ứng dụng web là sử dụng Drupal để tạo CMS xung quanh ứng dụng web. Để xây dựng những thứ như blog, danh sách nội dung và lượt thích. Tôi cũng đã tạo các mô-đun để định nghĩa một số nội dung phụ trợ - như định nghĩa lược đồ và các công cụ khác có ý nghĩa khi sử dụng Drupal - vì nó giúp cho việc phát triển của tôi dễ dàng hơn nhiều.

Thay vì sử dụng Drupal để tạo API REST mà ứng dụng web cần - tôi đã sử dụng Node.js để tạo API REST thực tế và kiểm tra các lệnh gọi AJAX khác mà ứng dụng web cần thực hiện. Node.js vượt trội khi làm việc này. Nó rất nhanh (thời gian phản hồi thấp tới 30ms cho một danh sách các đối tượng). Nó cũng rất nhẹ, vì JavaScript trên máy chủ sử dụng các hành động không đồng bộ, máy chủ Node.js thường có thể xử lý hàng ngàn người dùng đồng thời trong đó PHP có thể xử lý có thể 100. Ngoài ra - vì Node.js là JavaScript, bạn có thể sử dụng lại rất nhiều của máy chủ mã và phía máy khách. Theo nghĩa đen, bạn có thể viết cùng một mã xác thực, thay vì phải triển khai cả phía máy khách trong JavaScript và phía máy chủ trong PHP. Nếu bạn sẽ đến Drupal con ở Münich trong một vài tuần - bạn nên xem xét việc trình bày node.js.

Vì vậy, nếu bạn là một nhà phát triển, tôi thực sự khuyên bạn nên thực hiện một thiết lập tương tự và chỉ sử dụng Drupal cho những gì nó thực sự tốt. Nếu bạn muốn tạo một ứng dụng web đơn giản và bạn không mong đợi nhiều người dùng, sử dụng Drupal làm phụ trợ có thể là một lựa chọn nếu nó giúp ích cho thời gian phát triển của bạn.


Cập nhật Drupal 8

Vì vậy, với việc phát hành Drupal 8, một số điều trên vẫn đúng nhưng không được gia hạn như trước. Drupal 8 giống như Drupal 7 không phải là một công cụ nhẹ, như Node.js, Rails, Django, v.v. Vì các ứng dụng JavaScript chủ yếu sử dụng các dịch vụ khác nhau, bạn vẫn nên xem xét liệu Drupal có phải là công cụ tốt nhất cho việc này không.

Với Drupal 8, rất nhiều thứ đã được cải thiện. Dịch vụ là bản địa hơn rất nhiều, với Symphony điều khiển yêu cầu / phản hồi. Drupal 8 có rất nhiều khả năng thú vị với bộ nhớ đệm nâng cao và tất cả các tính năng tuyệt vời. Nhưng ngay cả với tất cả sự tuyệt vời của Drupal 8, nó vẫn nặng hơn rất nhiều so với các ứng dụng trọng lượng nhẹ. Thật khó để nói Drupal 8 có thể được sử dụng như một nhà cung cấp dịch vụ web nhanh như thế nào.

Tuy nhiên, với tất cả những gì đã nói và thực hiện, khuyến nghị chung của tôi vẫn giữ nguyên. Là một nhà phát triển Drupal, thật dễ dàng để sử dụng Drupal cho mọi thứ, vì chúng ta đã quen với nó. Nó cảm thấy an toàn và Drupal có thể được sử dụng cho bất cứ điều gì. Hãy nhớ rằng trong khi có thể sử dụng Drupal cho bất cứ điều gì, điều đó không có nghĩa đó là công cụ tốt nhất cho mọi thứ. Thực hiện phân tích âm thanh và hiểu được điểm mạnh và điểm yếu của các công cụ bạn muốn sử dụng trong dự án CNTT, sẽ luôn giúp ích rất nhiều và có thể giúp bạn tránh kết thúc ở vị trí bế tắc với kết quả không như mong đợi của bạn .


Cách tiếp cận thú vị. Bạn đang sử dụng drupal.org/project/nodejs hay bạn đang chuyển giao diện của riêng mình sang Drupal DB?
mpdon Arena

@googletorp, tôi đã làm việc với hành khách phusion và thậm chí cô ấy không thể hoạt động tốt hơn nếu không lưu vào bộ nhớ cache và tối ưu hóa máy chủ và tất cả các ngôn ngữ kịch bản phía máy chủ (trừ js) có vấn đề chặn khá nhiều. Bản thân tôi đã chuyển từ ruby ​​sang php vì một số hỗ trợ hiệu suất chuyên dụng trong cộng đồng nguồn mở và cực kỳ dễ sử dụng. Nodejs sẽ luôn duy trì nhanh hơn so với các ngôn ngữ khác.
Minty

Dù sao đi nữa, vì Drupal cung cấp khung mô-đun dịch vụ tuyệt vời, tôi nghĩ bạn có thể chia sẻ một số kiến ​​thức về xử lý dữ liệu ở phía khách hàng, đặc biệt là phiên giao dịch và công cụ.
Minty

@Minty Có một gói trợ giúp để tích hợp với Drupal trong Nodejs: github.com/mikl/node-drupal Việc xử lý phiên thực tế phụ thuộc rất nhiều vào cách thức / việc bạn làm. CORS, v.v., nhưng tôi thường gửi Drupal session_id hoặc là cookie hoặc trong tiêu đề yêu cầu.
googletorp

Tôi vừa đọc qua tài liệu xương sống tuyệt vời này github.com/kjbekkelund/writings/blob/master/published/ và nghĩ, xương sống là một cách tuyệt vời để tổ chức JavaScript của bạn và sử dụng nó với các cuộc gọi lại AJAX thông qua hệ thống định tuyến. Tại sao không kết hợp nó với Drupal vì Drupal phụ thuộc vào cùng một đặc điểm định tuyến?
AlxVallejo

6

Gần đây tôi đã bắt đầu phát triển ứng dụng xương sống + drupal đầu tiên của mình và tôi thực sự thích nó. Sử dụng mô-đun xương sống cùng với Dịch vụ, Chế độ xem dịch vụ và các thư viện cần thiết. Dự án khá đơn giản: Để tạo một băng chuyền có thể quản lý nội dung gồm 6 trang hiển thị nhiều dữ liệu khác nhau, cùng với một thanh trượt Tin tức bổ sung hiển thị nội dung khác nhau. Trang này nằm trên nhiều màn hình khác nhau mà không có sự tương tác của người dùng, do đó yêu cầu khả năng cập nhật nội dung giao diện người dùng mà không cần làm mới trình duyệt. Tôi nghĩ rằng điều này hoàn toàn phù hợp với ứng dụng Drupal + Backbone với Drupal quản lý nội dung và kiểm soát xương sống và đồng bộ hóa với db. Tôi đã tích hợp trong jquery. Motorcycle 2 có API tuyệt vời và phù hợp với phong cách mã hóa MVC.

Tôi có thể thấy lý do tại sao mọi người có thể bịt mũi khi sử dụng Drupal làm khung phụ trợ nhưng đối với một ứng dụng nhỏ như Drupal này thì nhẹ và nhanh . Tôi đã đạt được điều này bằng cách bắt đầu với một cài đặt tối thiểu và cẩn thận chọn các mô-đun đóng góp và cốt lõi. Bây giờ tôi đang ở khoảng 50 mô-đun với chỉ dưới 150 dòng mã JS tùy chỉnh cho các công cụ xương sống và tôi đã hoàn thành khá nhiều việc.

Cuối cùng, tôi sẽ cố gắng cam kết điều này trở lại làm ví dụ cho mô đun xương sống vì hiện tại không có ví dụ nào cho thấy cách sử dụng Chế độ xem làm bộ sưu tập, v.v.

Cuối cùng:

Rất đáng để bạn dành thời gian để xem xét điều này nếu dự án của bạn phù hợp. Theo tôi, các vấn đề về hiệu năng xuất phát từ sự nặng nề của Drupal có thể dễ dàng được giải quyết bằng cách sử dụng các cơ chế lưu trữ như Varnish, hoặc thậm chí tăng cường hoặc bộ đệm trang lõi. Tính linh hoạt và tốc độ phát triển từ việc sử dụng Drupal hoàn toàn vượt xa những tiêu cực đối với tôi.


5

Câu trả lời cơ bản là có, một số người đang sử dụng nó. Bản thân tôi chưa sử dụng nó (chưa tìm thấy một dự án phù hợp nào), nhưng hiện tại có một nhóm Drupal cho nó và nó cũng phù hợp với Dịch vụ web và Sáng kiến ​​bối cảnh cốt lõi , một trong những Sáng kiến ​​8 của Drupal . Ngoài ra còn có một phiên tại DrupalCon Munich 2012, Backbone.js trong Frontend .

Tôi không biết liệu nó đã sẵn sàng cho thời gian chính chưa, nhưng theo tôi, đáng để tạo ra một bằng chứng về khái niệm nếu bạn có thứ gì đó có thể có lợi từ nó và có thể thiết kế bên JS thành giao diện chứ không phải triển khai . Điều đó sẽ giúp cách ly mọi thay đổi phụ trợ nếu bạn quyết định bảo lãnh cho Drupal, vì bất kỳ lý do gì.


1
Về cơ bản: Stackexchange là nơi sai lầm để hỏi về điều này, vì đây là trường hợp đặc biệt như vậy vào thời điểm này. Đi lang thang đến cuộc thảo luận nhóm trên gdo
paul-m

MPD cảm ơn vì liên kết đến nhóm. Tôi có thể sẽ theo dõi ở đó. Tôi đã thực hiện một số câu hỏi xung quanh tại các nhóm người dùng, điều này thực sự phụ thuộc vào người ở đó. Vẫn đang cố gắng tìm ra khi nào tôi nên bắt đầu một câu hỏi trên Stack Exchange. Tôi hình dung điều này sẽ có nhiều hơn một câu trả lời đúng, vì vậy nó có vẻ phù hợp.
Ryan Giá

3

Bạn có thể thấy điều này hữu ích: nó cho thấy một ví dụ về việc chuyển đổi tập lệnh dựa trên JQuery thành tập lệnh xương sống. Rõ ràng là bạn sẽ cần phải sử dụng backbone.js, dưới dạng thư viện bằng drupal_add_js hoặc sử dụng mô-đun.

https://github.com/kjbekkelund/writings/blob/master/published/under Hiểu-backbone.md /


Xin chào Craig, cảm ơn vì liên kết, bạn có tài nguyên nào được sử dụng với Drupal không? Cảm ơn
Minty
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.