Utiliser un framework comme Backbone [fermé]

24

J'ai actuellement une page http://proctors.org/tv qui est entraînée par plusieurs vues et pièces jointes avec des tonnes de jQuery et des spaghettis JavaScript piratés, et je voudrais la nettoyer. Je comprends que les nouveaux frameworks Javascript "MVC" utilisent des modèles et ne stockent pas strictement toutes les données dans le DOM comme vous le feriez avec jQuery.

Je pense que vous utiliseriez quelque chose comme Services et / ou Vues comme backend, avec Backbone à l'avant.

Il y a un projet Do pour Backbone , et je me souviens qu'il y avait un BoF ou une session à DrupalCon Denver à ce sujet ...

J'espère découvrir si cela vaut la peine d'essayer de réécrire cela dans un nouveau cadre ou simplement nettoyer ce que j'ai ici.

Ryan Price
la source
4
Quelle est la question, exactement? Si la question est "Est-ce que quelqu'un utilise des frameworks Javascript comme Backbone ou Ember avec Drupal?" alors c'est un sondage, et en tant que tel n'est pas le bienvenu sur les sites Stack Exchange. Si vous avez une question spécifique sur l'utilisation de l'un de ces cadres JavaScript, posez-la.
kiamlaluno
2
Je pense qu'il demande s'il existe des frameworks javascript MVC qui peuvent fonctionner suffisamment bien avec le propre framework javascript de Drupal pour qu'ils entraînent moins de travail que de simplement rouler le sien. Cela me semble juste - pour certaines choses, l'intégration avec Drupal se déroule parfaitement bien, pour d'autres, il faut tellement de piratage que vous feriez mieux de simplement le réécrire à partir de zéro - et il semble juste de demander à des gens qui ont déjà essayé.
user56reinstatemonica8
Si vous voulez un tutoriel rapide pour obtenir backbone + drupal en cours d'exécution, vous pouvez consulter mon article de blog pixelite.co.nz/article/…
masterchief
Ce gars a un bon point de départ pour l'épine dorsale et Drupal pixelite.co.nz/article/…
Dan Walmsley
Ha ce mec est @masterchief de l'une des réponses ci
Ryan Price

Réponses:

18

J'ai utilisé Ember et Backbone avec Drupal - mais pas comme vous le pensez.

Ember et Backbone sont tous deux de bons outils pour créer une application Web - mais Drupal n'est pas vraiment un bon outil à utiliser avec eux. Ce que vous désirez lorsque vous créez une application Web, c'est quelque chose de léger et de rapide. Vous voulez qu'il soit rapide pour pouvoir donner à vos utilisateurs le sentiment d'avoir des temps de réponse immédiats. Vous voulez qu'il soit léger pour le rendre plus évolutif. Drupal n'est pas rapide - le bootstrap Drupal complet prend beaucoup de temps (par rapport à beaucoup d'autres options) si tout ce que vous voulez faire est de fournir une API REST pour votre application web. Drupal est PHP, ce qui le rend également assez gourmand en RAM, limitant le nombre d'utilisateurs simultanés.

Donc, si Drupal est si mauvais pour cela, pourquoi l'utiliser?

Vous devriez vraiment utiliser Drupal pour ce que Drupal excelle - un CMS. Ce que j'ai fait dans le passé avec des projets qui avaient besoin d'une application web, c'est d'utiliser Drupal pour créer le CMS autour de l'application web. Pour créer des trucs comme des blogs, des listes de contenu et autres. J'ai également créé des modules pour définir des trucs backend - comme les définitions de schéma, et d'autres trucs où il était logique d'utiliser Drupal - parce que cela a rendu mon développement beaucoup plus facile.

Au lieu d'utiliser Drupal pour créer l'API REST dont la webapp avait besoin - j'ai utilisé Node.js pour créer la véritable API REST et d'autres appels AJAX de vérification que la webapp devait effectuer. Node.js excelle dans ce domaine. C'est extrêmement rapide (temps de réponse aussi bas que 30 ms pour une liste d'objets). Il est également très léger, car JavaScript sur le serveur utilise des actions asynchrones, un serveur Node.js peut généralement gérer des milliers d'utilisateurs simultanés où PHP peut gérer jusqu'à 100. En plus de cela - puisque Node.js est JavaScript, vous pouvez réutiliser beaucoup du serveur de code et du côté client. Vous pouvez littéralement écrire le même code de validation, au lieu d'avoir à implémenter à la fois le côté client en JavaScript et le côté serveur en PHP. Si vous allez à Drupal con à Münich dans quelques semaines - vous devriez envisager de regarder la présentation node.js.

Donc, si vous êtes un développeur, je recommanderais fortement de faire une configuration similaire et d'utiliser uniquement Drupal pour ce qu'il est vraiment bon. Si vous voulez créer une webapp simple et que vous ne vous attendez pas à beaucoup d'utilisateurs, utiliser Drupal comme backend pourrait être une option si cela aide votre temps de développement.


Mettre à jour Drupal 8

Donc, avec la sortie de Drupal 8, certains des éléments ci-dessus sont toujours valables, mais pas dans la même étendue que précédemment. Drupal 8 est comme Drupal 7 pas un outil léger, comme Node.js, Rails, Django etc. Étant donné que les applications JavaScript consomment principalement divers services, vous devez toujours déterminer si Drupal est le meilleur outil pour cela.

Avec Drupal 8, beaucoup de choses ont été améliorées. Les services sont beaucoup plus natifs, Symphony pilotant la demande / réponse. Drupal 8 a beaucoup de possibilités intéressantes avec la mise en cache avancée et toutes les excellentes fonctionnalités. Mais même avec toute la grandeur de Drupal 8, il est toujours beaucoup plus lourd que les applications légères. Il est difficile de dire à quel point Drupal 8 peut être utilisé avec succès comme fournisseur de services Web rapide.

Donc, malgré tout ce qui a été dit et fait, ma recommandation générale reste la même. En tant que développeur Drupal, il est facile d'utiliser Drupal pour tout, car nous le connaissons. Il se sent en sécurité et Drupal peut être utilisé pour à peu près n'importe quoi. N'oubliez pas qu'il est possible d'utiliser Drupal pour n'importe quoi, mais cela ne signifie pas que c'est le meilleur outil pour tout. Faire une analyse solide et comprendre les forces et les faiblesses des outils que vous souhaitez utiliser dans un projet informatique, sera toujours d'une grande aide et vous aidera à éviter de vous retrouver dans une impasse avec un résultat qui ne correspond pas à vos attentes .

googletorp
la source
Approche intéressante. Utilisez -vous drupal.org/project/nodejs ou déployez -vous votre propre interface dans la base de données Drupal?
mpdonadio
@googletorp, j'ai travaillé avec Phusion Passenger et même elle ne peut pas mieux fonctionner sans la mise en cache et l'optimisation du serveur et tous les langages de script côté serveur (sauf js) ont un bon nombre de problèmes de blocage. En fait, je suis moi-même passé de ruby ​​à php en raison d'un support de performance dédié dans la communauté open source et d'une extrême facilité d'utilisation. Nodejs restera toujours plus rapide par rapport aux autres langues.
Minty
Quoi qu'il en soit, puisque Drupal fournit un cadre de module de services génial, je pensais que vous pourriez partager certaines connaissances sur la gestion des données côté client, en particulier la remise de session et d'autres choses.
Minty
@Minty Il existe un package d'aide pour l'intégration à Drupal dans Nodejs: github.com/mikl/node-drupal La gestion réelle de la session dépend beaucoup de la façon / de ce que vous faites. CORS, etc., mais j'envoie généralement le Drupal session_id soit un cookie, soit dans l'en-tête de la demande.
googletorp
Je viens de lire cette documentation impressionnante sur Backbone github.com/kjbekkelund/writings/blob/master/published/… et j'ai pensé que l'homme backbone est un excellent moyen d'organiser votre JavaScript et de l'utiliser avec des rappels AJAX via le système de routage. Pourquoi ne pas le combiner avec Drupal puisque Drupal repose sur les mêmes caractéristiques de routage?
AlxVallejo
6

J'ai récemment commencé à développer ma première application Backbone + Drupal et j'aime vraiment ça. Utilisation du module Backbone avec les services, les vues de services et les bibliothèques requises. Le projet est assez simple: créer un carrousel gérable de contenu de 6 pages qui affiche diverses données, ainsi qu'un curseur News supplémentaire qui affiche un contenu différent. Cette page se trouve sur différents écrans sans interaction de l'utilisateur, il était donc nécessaire de pouvoir mettre à jour le contenu frontal sans actualiser le navigateur. Je pensais que cela s'intégrait parfaitement dans une application Drupal + Backbone avec Drupal gérant le contenu et le backbone contrôlant et synchronisant avec la base de données. J'ai intégré dans jquery.cycle 2 qui a une API impressionnante et s'intègre bien dans le style de codage MVC.

Je peux voir pourquoi les gens pourraient mettre le nez sur l'utilisation de Drupal comme framework backend, mais pour une petite application comme celle-ci, Drupal est léger et rapide . J'ai atteint cet objectif en commençant par une installation minimale et en sélectionnant soigneusement les modules contrib et core. Je suis maintenant à environ 50 modules avec un peu moins de 150 lignes de code JS personnalisé pour les éléments de base et j'ai à peu près terminé.

Finalement, je vais essayer de valider ce retour en tant qu'exemple dans le module de base car il n'y a actuellement aucun exemple qui montre comment utiliser Views comme collections, etc.

En conclusion:

Cela vaut la peine de vous pencher sur la question si votre projet correspond bien. À mon avis, les problèmes de performances dérivés de la lourdeur de Drupal peuvent être facilement combattus en utilisant des mécanismes de mise en cache comme Varnish, ou même un boost ou une mise en cache de la page principale. La flexibilité et la rapidité de développement de l'utilisation de Drupal l'emportent complètement sur les points négatifs pour moi.

Master chef
la source
5

La réponse de base est oui, certaines personnes l'utilisent. Je ne l'ai pas utilisé moi-même (je n'ai pas encore trouvé de bonne correspondance de projet), mais il existe actuellement un groupe Drupal pour cela, et il s'intégrerait également à l' Initiative Web Services and Context Core qui est l'une des initiatives Drupal 8 . Il y a également une session à DrupalCon Munich 2012, Backbone.js dans le Frontend .

Je ne sais pas encore s'il est prêt pour les heures de grande écoute, mais à mon avis, cela vaut la peine de créer une preuve de concept si vous avez quelque chose qui pourrait en bénéficier et pouvez concevoir le côté JS d'une interface et non d'une implémentation . Cela aiderait à isoler tout changement de back-end si vous décidiez de renflouer Drupal, pour une raison quelconque.

mpdonadio
la source
1
Essentiellement: Stackexchange n'est pas le bon endroit pour poser des questions à ce sujet, car c'est un cas si spécial à ce stade. Promenez-vous vers la discussion de groupe sur gdo
paul-m
MPD remercie pour le lien vers le groupe. J'y ferai probablement un suivi. J'avais fait quelques recherches dans les groupes d'utilisateurs, ce qui dépend vraiment de qui est là. J'essaie toujours de savoir quand je devrais commencer une question sur Stack Exchange. J'ai pensé que cela aurait plus d'une bonne réponse, donc cela semblait être un bon choix.
Ryan Price
3

Vous pourriez trouver cela utile: il montre un exemple de conversion d'un script basé sur JQuery en un script de backbone. Évidemment, vous devrez extraire backbone.js, soit en tant que bibliothèque utilisant drupal_add_js ou en utilisant le module.

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

Craig Moore
la source
Salut Craig, merci pour le lien, avez-vous des ressources où cela est utilisé avec Drupal en particulier? Merci
Minty