Korzystanie z frameworka takiego jak Backbone [zamknięty]


24

Obecnie mam stronę http://proctors.org/tv, która jest oparta na kilku odsłonach i załącznikach z mnóstwem jQuery i zhakowanego spaghetti JavaScript, i chciałbym to wyczyścić. Rozumiem, że nowsze frameworki JavaScriptu „MVC” korzystają z szablonów i nie przechowują ściśle wszystkich danych w DOM, tak jak w przypadku jQuery.

Wierzę, że jako zaplecza użyłbyś czegoś takiego jak Usługi i / lub Widoki, z Szkieletem z przodu.

Istnieje projekt Do dla Backbone i pamiętam, że w DrupalCon Denver odbyła się sesja BoF lub sesja ...

Mam nadzieję dowiedzieć się, czy warto poświęcić czas na przepisanie tego w nowym środowisku, czy po prostu posprzątać to, co tu mam.


4
Jakie jest dokładnie pytanie? Jeśli pytanie brzmi: „Czy ktoś używa frameworków Javascript, takich jak Backbone lub Ember z Drupalem?” wtedy jest to ankieta i jako taka nie jest mile widziana na stronach Stack Exchange. Jeśli masz konkretne pytanie dotyczące korzystania z jednego z tych frameworków JavaScript, zadaj to pytanie.
kiamlaluno

2
Myślę, że pyta, czy istnieją jakieś frameworki javascript MVC, które mogłyby działać wystarczająco dobrze z własnym frameworkiem javascript Drupala, że ​​spowodowałyby mniej pracy niż zwykłe uruchomienie własnej. Wydaje mi się to sprawiedliwe - w niektórych przypadkach przesiedlenie się z Drupalem przebiega pięknie bezproblemowo, w innych potrzeba tak dużo hakowania, że ​​lepiej byłoby po prostu przepisać go od nowa - i wydaje się sprawiedliwe, aby zapytać ludzi, którzy już próbowali.
user56reinstatemonica8,

Jeśli chcesz uzyskać szybki samouczek, aby uzyskać kręgosłup + drupal, możesz sprawdzić mój blog na blogu pixelite.co.nz/article/…
masterchief

Ten facet ma dobry punkt wyjścia do kręgosłupa i Drupala pixelite.co.nz/article/…
Dan Walmsley

Ha, ten facet to @masterchief z jednej z powyższych odpowiedzi
Ryan Price

Odpowiedzi:


18

Użyłem zarówno Embera, jak i Kręgosłupa wraz z Drupalem - ale nie w taki sposób, jak myślisz.

Ember i Backbone są świetnymi narzędziami do tworzenia aplikacji internetowych - ale Drupal nie jest tak naprawdę dobrym narzędziem, z którego można ich używać. Podczas tworzenia aplikacji internetowej pragniesz czegoś lekkiego i szybkiego. Chcesz, aby był szybki, aby dać użytkownikom poczucie natychmiastowego czasu reakcji. Chcesz, aby był lekki, aby lepiej skalować. Drupal nie jest szybki - pełny bootstrap Drupal zajmuje dużo czasu (w porównaniu z wieloma innymi opcjami), jeśli wszystko, co chcesz zrobić, to zapewnić interfejs API REST dla swojej aplikacji internetowej. Drupal to PHP, co sprawia, że ​​jest dość wymagający od pamięci RAM, ograniczając liczbę jednoczesnych użytkowników.

Więc jeśli Drupal jest taki zły, po co go używać?

Powinieneś naprawdę użyć Drupala do tego, co wyróżnia Drupala - CMS. To, co robiłem w przeszłości z projektami, które wymagały aplikacji internetowej, to użycie Drupala do stworzenia CMS wokół aplikacji internetowej. Do tworzenia takich rzeczy jak blogi, listy treści i polubienia. Stworzyłem również moduły do ​​zdefiniowania niektórych elementów zaplecza - takich jak definicje schematów i innych rzeczy, w których użycie Drupala miało sens - ponieważ znacznie ułatwiło mi to rozwój.

Zamiast używać Drupala do tworzenia interfejsu API REST, którego potrzebowała aplikacja internetowa - użyłem Node.js do utworzenia rzeczywistego interfejsu API REST i innych kontroli wywołań AJAX wymaganych przez aplikację. Node.js wyróżnia się tym właśnie. Jest niesamowicie szybki (czasy odpowiedzi już 30 ms dla listy obiektów). Jest również bardzo lekki, ponieważ JavaScript na serwerze używa akcji asynchronicznych, serwer Node.js zwykle może obsłużyć tysiące równoczesnych użytkowników, przy czym PHP może obsłużyć może 100. Ponadto - ponieważ Node.js to JavaScript, możesz wiele ponownie użyć po stronie serwera kodu i po stronie klienta. Możesz dosłownie napisać ten sam kod weryfikacyjny, zamiast konieczności implementacji zarówno po stronie klienta w JavaScript, jak i po stronie serwera w PHP. Jeśli wybierasz się na Drupal con w Münich za kilka tygodni - powinieneś rozważyć obejrzenie prezentacji node.js.

Więc jeśli jesteś programistą, zdecydowanie polecam wykonanie podobnej konfiguracji i używaj Drupala tylko do tego, w czym jest naprawdę dobry. Jeśli chcesz stworzyć prostą aplikację internetową i nie spodziewasz się dużej liczby użytkowników, użycie Drupala jako backendu może być opcją, jeśli pomoże ci to w rozwoju.


Zaktualizuj Drupal 8

Tak więc wraz z wydaniem Drupala 8 niektóre z powyższych nadal są prawdziwe, ale nie w takim samym zakresie, jak wcześniej. Drupal 8 jest jak Drupal 7, a nie lekkie narzędzie, takie jak Node.js, Rails, Django itp. Ponieważ aplikacje JavaScript korzystają głównie z różnych usług, powinieneś rozważyć, czy Drupal jest najlepszym narzędziem do tego.

Dzięki Drupal 8 wiele rzeczy zostało ulepszonych. Usługi są znacznie bardziej natywne, a Symphony steruje żądaniem / odpowiedzią. Drupal 8 ma wiele interesujących możliwości dzięki zaawansowanemu buforowaniu i wszystkim wspaniałym funkcjom. Ale nawet pomimo całej świetności Drupala 8, wciąż jest o wiele cięższy niż lekkie aplikacje. Trudno powiedzieć, jak udanego Drupala 8 można użyć jako szybkiego dostawcy usług internetowych.

Mimo to, mimo że wszystko zostało powiedziane i zrobione, moje ogólne zalecenie pozostaje takie samo. Będąc programistą Drupal, łatwo jest używać Drupala do wszystkiego, ponieważ jesteśmy z nim zaznajomieni. Czuje się bezpiecznie, a Drupala można używać do wszystkiego. Pamiętaj, że chociaż można używać Drupala do wszystkiego, nie oznacza to, że jest to najlepsze narzędzie do wszystkiego. Przeprowadzenie rzetelnej analizy i zrozumienie mocnych i słabych stron narzędzi, których chcesz używać w projekcie IT, zawsze będzie bardzo pomocne i pomoże uniknąć sytuacji, w której znajdziesz się w impasie z wynikiem, który nie spełni Twoich oczekiwań .


Ciekawe podejście Czy używasz drupal.org/project/nodejs, czy też włączasz własny interfejs do bazy danych Drupal?
mpdonadio

@googletorp, pracowałem z pasażerką phusion i nawet ona nie może działać lepiej bez buforowania i optymalizacji serwera, a wszystkie języki skryptowe po stronie serwera (z wyjątkiem js) mają spory problem z blokowaniem. Faktycznie sam przerzuciłem się z ruby ​​na php ze względu na pewne dedykowane wsparcie wydajności w społeczności open source i niezwykłą łatwość użycia. Nodejs zawsze pozostanie szybszy w porównaniu do innych języków.
Minty

W każdym razie chodzi o to, że ponieważ Drupal zapewnia niesamowitą platformę modułów usług, pomyślałem, że możesz podzielić się wiedzą na temat obsługi danych po stronie klienta, zwłaszcza przekazywania sesji i innych rzeczy.
Minty

@Minty Istnieje pakiet pomocniczy do integracji z Drupalem w Nodejs: github.com/mikl/node-drupal Rzeczywista obsługa sesji zależy w dużej mierze od tego, jak / co robisz. CORS itp., Ale zwykle wysyłam Drupal session_id albo plik cookie, albo w nagłówku żądania.
googletorp

Właśnie przeczytałem tę niesamowitą dokumentację dotyczącą kręgosłupa github.com/kjbekkelund/writings/blob/master/published/... i pomyślałem, że szkielet człowieka to świetny sposób na zorganizowanie JavaScript i używanie go z wywołaniami zwrotnymi AJAX za pośrednictwem systemu routingu. Dlaczego nie połączyć go z Drupal, ponieważ Drupal opiera się na tych samych właściwościach routingu?
AlxVallejo

6

Niedawno zacząłem rozwijać moją pierwszą aplikację szkieletową + drupal i bardzo mi się to podoba. Korzystanie z modułu Backbone wraz z usługami, widokami usług i wymaganymi bibliotekami. Projekt jest dość prosty: stworzyć karuzelę zarządzającą treścią złożoną z 6 stron, na której wyświetlane są różne dane, wraz z dodatkowym suwakiem Wiadomości, wyświetlającym różne treści. Ta strona jest wyświetlana na różnych ekranach bez interakcji użytkownika, dlatego wymagała możliwości aktualizacji treści interfejsu użytkownika bez odświeżania przeglądarki. Pomyślałem, że idealnie pasuje do aplikacji Drupal + Backbone, a Drupal zarządza treścią, kontroluje szkielet i synchronizuje go z db. Zintegrowałem z jquery.cycle 2, który ma niesamowite API i dobrze pasuje do stylu kodowania MVC.

Rozumiem, dlaczego ludzie mogą trzymać się nosa, gdy używają Drupala jako frameworka, ale w przypadku takiej małej aplikacji Drupal jest lekki i szybki . Osiągnąłem to, zaczynając od minimalnej instalacji i ostrożnie wybierając moduły contrib i core. Mam teraz około 50 modułów z prawie 150 liniami niestandardowego kodu JS dla szkieletu i jestem prawie gotowy.

W końcu spróbuję przekazać to z powrotem jako przykład do modułu szkieletowego, ponieważ obecnie nie ma żadnego przykładu, który pokazuje, jak używać widoków jako kolekcji itp.

Podsumowując:

Warto poświęcić temu czas, aby sprawdzić, czy Twój projekt dobrze pasuje. Moim zdaniem problemy z wydajnością wynikające z ciężkości Drupala można łatwo zwalczać, stosując mechanizmy buforowania, takie jak Varnish, a nawet przyspieszanie lub buforowanie strony głównej. Elastyczność i szybkość rozwoju z wykorzystaniem Drupala całkowicie przeważają dla mnie negatywne.


5

Podstawowa odpowiedź brzmi: tak, niektóre osoby go używają. Nie korzystałem z niego osobiście (nie znalazłem jeszcze dobrego projektu), ale obecnie istnieje dla niego grupa Drupal , a także pasuje do Web Services i Context Core Initiative, która jest jedną z inicjatyw Drupal 8 . Istnieje również sesja na DrupalCon Monachium 2012, Backbone.js w Frontend .

Nie wiem, czy jest jeszcze gotowy na najwyższy czas, ale moim zdaniem warto stworzyć dowód koncepcji, jeśli masz coś, co mogłoby z niego skorzystać, i może zaprojektować stronę JS interfejsu, a nie implementację . Pomogłoby to wyodrębnić wszelkie zmiany backendu, gdybyś zdecydował się zapłacić kaucję Drupalowi, z jakiegokolwiek powodu.


1
Zasadniczo: Stackexchange jest niewłaściwym miejscem, w którym można o to zapytać, ponieważ w tym momencie jest to tak szczególny przypadek. Przejdź do dyskusji grupowej na temat gdo
paul-m

MPD dziękuję za link do grupy. Prawdopodobnie tam pójdę. Zadawałem pytania w grupach użytkowników, co naprawdę zależy od tego, kto tam jest. Wciąż próbuję dowiedzieć się, kiedy powinienem zacząć pytanie na Stack Exchange. Uznałem, że będzie to więcej niż jedna właściwa odpowiedź, więc wydawało mi się, że to pasuje.
Ryan Price

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.