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.
javascript
Ryan Price
la source
la source
Réponses:
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 .
la source
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.
la source
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.
la source
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/
la source