Utilizzo di un framework come Backbone [chiuso]


24

Al momento ho una pagina http://proctors.org/tv che è guidata da diverse viste e allegati con tonnellate di jQuery e spaghetti JavaScript messi insieme e vorrei ripulirlo. Comprendo che i nuovi framework "MVC" Javascript utilizzano modelli e non memorizzano rigorosamente tutti i dati nel DOM, come si potrebbe fare con jQuery.

Credo che useresti qualcosa come Servizi e / o Visualizzazioni come backend, con Backbone nella parte anteriore.

Esiste un progetto Do per Backbone , e ricordo che al riguardo DrupalCon Denver aveva un BoF o una sessione ...

Spero di scoprire se vale la pena dedicare il mio tempo a provare a riscriverlo in un nuovo framework o semplicemente a ripulire ciò che ho qui.


4
Qual è la domanda, esattamente? Se la domanda è "Qualcuno usa framework Javascript come Backbone o Ember con Drupal?" allora è un sondaggio e come tale non è il benvenuto sui siti di Stack Exchange. Se hai una domanda specifica sull'uso di uno di quei framework JavaScript, allora fai quella domanda.
kiamlaluno

2
Penso che stia chiedendo se esistono dei framework javascript MVC in grado di funzionare sufficientemente bene con il framework javascript di Drupal, che porterebbero a meno lavoro rispetto al semplice lancio del proprio. Mi sembra giusto - per alcune cose, l'immigrazione con Drupal va benissimo, per altri, ha bisogno di così tanto hacking che sarebbe meglio riscriverlo da zero - e sembra giusto chiedere alle persone che hanno già provato.
user56reinstatemonica8

Se vuoi un breve tutorial per ottenere una backbone + un drupal in esecuzione puoi dare un'occhiata al mio post sul blog pixelite.co.nz/article/…
masterchief

Questo ragazzo ha un buon punto di partenza per la spina dorsale e Drupal pixelite.co.nz/article/…
Dan Walmsley,

Ah, quel ragazzo è @masterchief da una delle risposte sopra
Ryan Price

Risposte:


18

Ho usato sia Ember che Backbone insieme a Drupal, ma non nel modo in cui penseresti.

Ember e Backbone sono entrambi ottimi strumenti per creare un'applicazione Web, ma Drupal non è davvero un ottimo strumento da utilizzare insieme a loro. Quello che desideri quando hai creato un'app Web è qualcosa di leggero e veloce. Vuoi che sia veloce per essere in grado di dare ai tuoi utenti la sensazione di tempi di risposta immediati. Vuoi che sia leggero per adattarlo meglio. Drupal non è veloce: l'intero bootstrap Drupal richiede molto tempo (rispetto a molte altre opzioni) se tutto ciò che vuoi fare è fornire un'API REST per la tua app web. Drupal è PHP, che rende anche abbastanza RAM affamato limitando il numero di utenti simultanei.

Quindi se Drupal è così male per questo, perché usarlo?

Dovresti davvero usare Drupal per quello che Drupal eccelle: un CMS. Quello che ho fatto in passato con progetti che necessitavano di un'app Web è utilizzare Drupal per creare il CMS attorno all'app Web. Per creare cose come blog, elenchi di contenuti e simili. Ho anche creato moduli per definire alcune cose di backend - come le definizioni dello schema e altre cose in cui aveva senso usare Drupal - perché ha reso il mio sviluppo molto più semplice.

Invece di usare Drupal per creare l'API REST di cui la webapp aveva bisogno, ho usato Node.js per creare l'API REST effettiva e altri controlli che le chiamate AJAX dovevano effettuare. Node.js eccelle nel fare proprio questo. È velocissimo (tempi di risposta fino a 30ms per un elenco di oggetti). È anche molto leggero, poiché JavaScript sul server utilizza azioni asincrone, un server Node.js di solito può gestire migliaia di utenti simultanei in cui PHP può gestire forse 100. Inoltre, poiché Node.js è JavaScript, puoi riutilizzare molto del server di codice e lato client. Puoi letteralmente scrivere lo stesso codice di convalida, invece di dover implementare sia il lato client in JavaScript sia il lato server in PHP. Se vai a Drupal con a Münich tra qualche settimana, dovresti considerare di guardare la presentazione node.js.

Quindi, se sei uno sviluppatore, consiglio vivamente di fare una configurazione simile e utilizzare Drupal solo per quello che è veramente bravo. Se vuoi creare una semplice webapp e non ti aspetti un sacco di utenti, utilizzare Drupal come backend potrebbe essere un'opzione se ti aiuta nel tempo di sviluppo.


Aggiorna Drupal 8

Quindi, con il rilascio di Drupal 8, alcuni dei precedenti sono ancora validi, ma non nella stessa estensione di prima. Drupal 8 è come Drupal 7 non uno strumento leggero, come Node.js, Rails, Django ecc. Poiché le app JavaScript utilizzano principalmente vari servizi, dovresti comunque considerare se Drupal è lo strumento migliore per questo.

Con Drupal 8 molte cose sono state migliorate. I servizi sono molto più nativi, con Symphony che guida la richiesta / risposta. Drupal 8 ha molte possibilità interessanti con la cache avanzata e tutte le fantastiche funzionalità. Ma nonostante tutta la grandezza di Drupal 8, è ancora molto più pesante delle applicazioni leggere. È difficile dire quanto Drupal 8 possa essere utilizzato con successo come fornitore di servizi web veloci.

Quindi, nonostante tutto ciò che viene detto e fatto, la mia raccomandazione generale rimane la stessa. Essendo uno sviluppatore di Drupal, è facile usare Drupal per tutto, dal momento che ne abbiamo familiarità. Sembra sicuro e Drupal può essere usato praticamente per qualsiasi cosa. Ricorda che mentre è possibile utilizzare Drupal per qualsiasi cosa, non significa che sia lo strumento migliore per tutto. Fare una buona analisi e comprendere i punti di forza e di debolezza degli strumenti che si desidera utilizzare in un progetto IT, sarà sempre di grande aiuto e può aiutarti a evitare di finire in una posizione di stallo con un risultato che non è all'altezza delle tue aspettative .


Approccio interessante Stai usando drupal.org/project/nodejs o stai passando la tua interfaccia al DB Drupal?
mpdonadio

@googletorp, ho lavorato con phusion passenger e anche lei non può funzionare meglio senza memorizzazione nella cache e ottimizzazione del server e tutti i linguaggi di scripting lato server (tranne js) presentano un discreto numero di problemi di blocco. Infatti io stesso sono passato dal rubino al php a causa del supporto prestazionale dedicato nella comunità open source e dell'estrema facilità d'uso. Nodejs rimarrà sempre più veloce rispetto ad altre lingue.
Menta,

Ad ogni modo il punto è che, poiché Drupal offre un fantastico framework per moduli di servizi, ho pensato che potessi condividere alcune conoscenze sulla gestione dei dati sul lato client, in particolare sulla gestione di sessioni e cose.
Menta,

@Minty Esiste un pacchetto di supporto per l'integrazione con Drupal in Nodejs: github.com/mikl/node-drupal La gestione effettiva della sessione dipende molto da come / cosa fai. CORS ecc., Ma di solito invio Drupal session_id o un cookie o nell'intestazione della richiesta.
googletorp

Ho appena letto questa fantastica documentazione su Backbone github.com/kjbekkelund/writings/blob/master/published/… e ho pensato che man backbone sia un ottimo modo per organizzare il tuo JavaScript e usarlo con i callback AJAX tramite il sistema di routing. Perché non combinarlo con Drupal poiché Drupal si basa sulle stesse caratteristiche di routing?
AlxVallejo,

6

Di recente ho iniziato a sviluppare la mia prima applicazione backbone + drupal e mi sto davvero divertendo. Utilizzo del modulo Backbone insieme a Servizi, Viste servizi e librerie richieste. Il progetto è abbastanza semplice: creare un carosello gestibile di 6 pagine che visualizzi vari dati, insieme a un dispositivo di scorrimento Notizie aggiuntivo che visualizza contenuti diversi. Questa pagina si trova su vari schermi senza l'interazione dell'utente, quindi è richiesta la possibilità di aggiornare il contenuto del front-end senza aggiornare il browser. Ho pensato che si adattasse perfettamente a un'app Drupal + Backbone con Drupal che gestiva il contenuto e il backbone controllando e sincronizzando con il db. Ho integrato in jquery.cycle 2 che ha un'API fantastica e si adatta bene allo stile di codifica MVC.

Posso capire perché le persone potrebbero stuzzicarsi per usare Drupal come framework back-end, ma per una piccola applicazione come questa Drupal è leggera e veloce . Ho raggiunto questo obiettivo iniziando con un'installazione minima e selezionando attentamente i moduli contrib e core. Sono ora a circa 50 moduli con poco meno di 150 righe di codice JS personalizzato per le cose di backbone e ho praticamente finito.

Alla fine proverò a ricollegarlo come esempio al modulo backbone in quanto attualmente non esiste alcun esempio che mostri come utilizzare Views come raccolte, ecc.

In conclusione:

Vale la pena dedicare del tempo a esaminare questo aspetto se il tuo progetto si abbina bene. A mio avviso, i problemi di prestazioni derivati ​​dalla pesantezza di Drupal possono essere facilmente combattuti utilizzando meccanismi di memorizzazione nella cache come Varnish, o persino il potenziamento o la memorizzazione nella cache delle pagine principali. La flessibilità e la velocità di sviluppo dell'utilizzo di Drupal sono superiori ai miei negativi.


5

La risposta di base è sì, alcune persone la stanno usando. Non l'ho usato da solo (non ho ancora trovato una buona partita di progetto), ma al momento esiste un gruppo Drupal per esso, e si adatterebbe anche con l' Iniziativa Servizi Web e Contesto Core che è una delle Iniziative Drupal 8 . C'è anche una sessione al DrupalCon di Monaco 2012, Backbone.js nel frontend .

Non so ancora se sia pronto per la prima serata, ma secondo me vale la pena creare una prova del concetto se hai qualcosa che potrebbe trarne beneficio e puoi progettare il lato JS su un'interfaccia e non su un'implementazione . Ciò aiuterebbe a isolare qualsiasi modifica del backend nel caso in cui decidessi di salvare su Drupal, per qualsiasi motivo.


1
In sostanza: Stackexchange è il posto sbagliato in cui chiederlo, dal momento che è un caso così speciale a questo punto. Passa alla discussione di gruppo su gdo
paul-m

MPD grazie per il link al gruppo. Probabilmente seguirò lassù. Avevo fatto alcune domande ai gruppi di utenti, che dipende davvero da chi c'è. Sto ancora cercando di capire quando dovrei iniziare una domanda su Stack Exchange. Ho pensato che questo avrebbe avuto più di una risposta giusta, quindi mi è sembrato adatto.
Ryan Price,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.