Démystifier Dojo Toolkit


Traduit de : http://www.sitepen.com/blog/2008/10/27/debunking-dojo-toolkit-myths/

Dojo Toolkit existe depuis plus de 4 ans et a subît des changements significatifs, certains énormes d’autres plus petit, pour devenir un grand toolkit JavaScript. Cet article a pour but de supprimer les mythes et a priori (aussi grotesque que faux) qui entourent Dojo depuis le début de son développement.

Dojo n’est pas documenté

Loin s’en faut ! Au tout départ, la documentation de Dojo était le code source. Aujourd’hui nous avons une énorme quantité d’information disponible, et nous travaillons sur une meilleure organisation ainsi qu’un affinage de ces dernières.
Pour commencer, vous pouvez regarder Dojo QuickStart Guide, Dojo API Viewer et le projet de documentation de Dojo Campus (qui remplacera prochainement le vénérable Dojo Book)
Vous voulez une doc hors-ligne ? Utilisez Dojo Toolbox pour le moment et bientôt le projet de documentation de Dojo Campus sera aussi disponible.
Besoin d’un livre ? Vous pouvez choisir parmi 4 grands livres traitants exclusivement de Dojo.
Besoin d’un tutoriel ou d’un article ? Essayez l’un des cent et quelques liens.
Vous voulez voir des démos ? Faites un tour sur le Dojo Campus Feature Explorer ou sur le Dojo Spotlight.
Besoin de travaux pratiques ? Contactez l’assistance SitePen.
Est-ce que Dojo va continuer de simplifier et d’enrichir sa documentation ? Absolument, et nous apprécierons toutes votre aide et vos retours.

Dojo est lent

Toutes les librairies JavaScript peuvent être lentes si elles sont mal utilisées. Durant la période Dojo 0.4, il était très simple de créer une application lente car le parseur était activé par défaut et qu’il incluait tout un tas de fichiers externes et de codes source.
Aujourd’hui, le parseur est uniquement dans Dijit et n’est le problème que de ce dernier. Dojo est différent de Dijit, et aujourd’hui vous ne subissez les baisses de performance du parseur (qui sont bien plus faible qu’a l’époque de Dojo 0.4) que si vous avez besoin d’un environnement de widget complet.

Depuis les 18 derniers mois, Dojo a rendu simple la création de chose légère et rapide. Toutes les fonctionnalités de qui était dans Dojo 0.4 sont au moins 100% plus rapide dans le Dojo actuel, et certaines parties sont même 1000% plus rapide, voire plus. Les mesures de performance effectués avec SlickSpeed test suite sur les requêtes montre que dojo.query est aussi rapide, sinon plus, que la plus part des autres toolkits majeurs.

Et Dojo offre une pléthore de techniques et de suggestions d’optimisation pour faire gagner quelques Ko et millisecondes à votre code source. Être performant, fiable et cross-browser est un art guidé par les données qui requiert de laisser beaucoup d’idées reçues devant la porte, d’écouter les données, et faire des compromis si nécessaire.

Dojo est gonflé, plus gros et plus complexe que Prototype, jQuery, MooTools, YUI, etc.

Dojo est conçu pour vous fournir les outils nécessaires pour résoudre de problèmes complexes, tout en gardant simple les choses simples. Ce mythe existe uniquement parce que nous utilisons un système que packaging et que nous encourageons les développeurs à utiliser notre système de packaging pour optimiser les performances. Si vous téléchargez le code source complet de Dojo vous allez voir beaucoup de fichiers. De tous ces fichiers, vous ne devez en inclure qu’un seul avec une balise script dans votre code.
Nous avons rendu simple vos premiers pas en permettant d’inclure simplement dojo.js depuis les serveurs de contenu AOL ou Google. Nous appelons dojo.js « Dojo Base ». Il fait 26Ko (gzippé) et est comparable en taille, caractéristique, performances et fonctionnalités aux autres toolkit majeur.
Dojo Base fourni un set de fonctionnalités extrêmement riche et léger, utile à tous les développeurs web. Je pense qu’il vous sera difficile de trouver plus de fonctionnalités et de puissance dans moins de Ko.
Si 26Ko est encore trop vous pouvez aussi utiliser une version réduite de Dojo qui tient dans 5.5 Ko. Elle n’intègre que le module de chargement d’éléments de Dojo puis ajoute au fur et à mesure les fonctionnalités exactes dont vous avez besoin. Vous pouvez aussi prendre le Dojo SDK complet et le réduire à ce dont vous avez besoin.

Dans un navigateur, toutes les fonctionnalités ajoutent une légère baisse de performance, c’est pourquoi Dojo offre la flexibilité nécessaire pour n’inclure que ce dont vous avez besoin et rien de plus tout en offrant une énorme quantité de fonctionnalités, de manière organisé et cohérente. Si vous désirez utiliser plus de fonctionnalités de Dojo — c’est complètement optionnel — vous n’avez qu’à utiliser dojo.require pour ajouter ce dont vous avez besoin. La structure des classes, dans la plus part des cas, suit la structure logique des répertoires de votre projet. Par exemple, dijit.foo.Bar devrait se trouver dans /dijit/foo/Bar.js.

Ce système simple de namespace et d’inclusion facilite l’utilisation des codes Dojo et de ceux qui suivent ces règles. Ceci facilite la création d’applications avancées et puissantes autant que celle de fonctionnalités simples telles que le Dojo Flickr Badge.

Le système de package Dojo, s’il ajoute une légère complexité qui ne prend que 2 minutes à comprendre pour un nouveau développeur, le rend plus lisible et organisé. Il vous offre aussi la capacité de gérer simplement votre code quand la quantité de dépendance et d’inclusions auraient pu le rendre peu maniable. Dojo est une librairie et se comporte comme tel. Comme Java et beaucoup d’autre langage, nous n’incluons automatiquement que le strict minimum de code, et mettons a votre disposition une quantité d’autre package que vous pouvez inclure manuellement.
A l’intérieur de Dojo se trouve divers framework. Le plus largement connu étant Dijit. Les widgets de Dijit ont des dépendances avec le code du framework. Cette sorte de longue chaine de dépendance est rare dans Dojo, mais existe lorsque l’on a besoin de fournir des fonctionnalités plus riche.

Dojo à besoin de Java

Pas du tout, même s’il est vrai que le SDK complet de Dojo inclut quelques fichier jar.
En plus des capacités natives au navigateur, Dojo fourni de manière complètement optionnelles des outils (basé sur Rhino) d’optimisation de votre code, pour gagner en performance lors du processus de packaging. Rhino est le moteur JavaScript de la Fondation Mozilla, implémenté en Java.
Pourquoi voulons-nous toujours « builder » le JavaScript ? Pour réduire la taille de votre code, optimiser le cache, et réduire le nombre d’appel au serveur. Par exemple, vous pouvez fusionner les règles CSS, et incorporer les ressources HTML utilisées par les widgets directement dans le code JavaScript, en tant que chaine de caractère. Tous ça pour réduire le nombre de requête HTTP, la taille des fichiers et bien plus.

Dojo est verbeux et est « du Java pour JavaScript »

La seule chose dans Dojo qui ressemble à Java est notre désir d’inclure les éléments dans des namespaces. Notre structure de librairie encourage toujours la brièveté d’écriture, en mettant les fonctionnalités de Dojo Base directement dans le namespace Dojo*.
Dojo préfère dojo.byId et dojo.query plutôt que $, bien qu’il soit très facile d’utiliser votre propre fonction si vous le désirez.

Dojo préfère tout placer dans des namespaces pour réduire notre présence dans le namespace global, et ceci afin de permettre à Dojo de coexister avec d’autres librairies ou bout de code sans jamais avoir de problème de conflit de nommage. De plus, Dojo minimise la surcharge de fonction, ainsi l’utilisation complète des APIs n’entrave pas la maintenance du code.
Par souci de rapidité, tous ce qui est fortement utilisé est typiquement dans le namespace le plus haut d’une manière courte et simple à retenir, exemple dojo.connect et dojo.attr. La concision de notre API et la structure des namespaces ont tendance à étonner les gens qui n’ont pas utilisé Dojo depuis la 0.4 ou même avant.
Chaque composant est une « chose » distincte et nos seules options sont de l’adresser dans le namespace global (ce qui pourrait engendrer des conflits) ou de l’accrocher dans Dojo.
On peut admettre que certains toolkit n’ont pas de namespace simplement parce qu’ils ne fournissent pas assez de code pour en avoir besoin.
Les développeurs Java aiment vraiment Dojo (ou DWR ou même GWT ou Ext), vraisemblablement pour la largeur, la profondeur, et l’organisation des ses API.

Une grande partie de l’inspiration de Dojo est dérivée du Python, d’AOP, de PHP, de Java, ainsi que variété de construction fonctionnelle telle que hitch, mixins, delegation, et plus. De plus, nous refusons explicitement l’utilisation de quelconques patterns provenant d’autre langage, et nous faisons d’énorme effort pour faire de notre JavaScript un pattern unique.

Les constructeurs du Toolkit tels que dojo.declare() peuvent être considéré comme identique à Java, quoi que la plus part des librairies ont une sorte de modèle de constructeur et d’héritage. Dojo tire avantage de la flexibilité du JavaScript plutôt que d’essayer de fournir une gestion spécifique issue d’un autre langage que le JavaScript.

Dojo est uniquement utile pour les applications d’entreprise et surement pas pour de petits sites ou des blogs

Ce mythe existe parce que Dojo n’était pas aussi petit et simple dans Dojo 0.4 qu’il ne l’est aujourd’hui. Dojo Base fait 26Ko gzippé et Dojo Mini descend jusqu’à 5.5Ko. Les deux disposent de la même facilité d’utilisation des API, ce qui rend possible de faire facilement des améliorations progressives, du JavaScript non intrusif, de la récupération d’événements, de l’Ajax, des animations, du DOM, du querying, et bien plus.

Dojo n’est pas pour des applications sur une seule page

Les développeurs de Cappuccino, Objective-J et Sprout Core, argue qu’ils ont créé leur toolkit parce que les autres ne sont pas optimisé pour de réelle application dans un navigateur. Selon nous, c’est n’importe quoi.
Dojo est grandement utilisé dans des applications riches par une foule de société comme Sun Convergence, WebEx Connect de Cisco et Project Zero d’ IBM. Dojo est aussi très fortement utilisé pour créer des applications intranet, dans ce que j’appelle Ajax Dark Matter.

Dojo n’est pas pour les applications multipages et pour les sites web

Alors qu’il est peu probable qu’une personne croit en ce mythe et au précédent en même temps, ce point de vue n’est que perspective. Étant donné la taille du toolkit, certaines personnes ont supposée que Dojo ne devrait pas être utilisé pour des sites multipages, mais les options étendues d’optimisation de Dojo font de ce cas d’usage une force. L’Eye-Fi Manager ainsi que le site de la fondation Dojo lui-même montre combien sont rapides (à la fois d’éxécution et de chargement) ces applications et sites.

Dojo c’est juste pour les widgets

Dojo à un système de widgets hautement flexible, et extrêmement rapide appelé Dijit. Il s’agit d’un package complètement optionnel pour les gens qui ont besoin d’utiliser et de créer leurs propres widgets. C’est conçus pour répondre à une variété de cas d’utilisation de manière modulaire, en incluant l’accessibilité, l’internationalisation, la mise en page, la gestion de conteneur, les templates et bien plus. Le concept sous-jacent est que chaque widgets est simplement un template HTML, un template CSS et un fichier JavaScript pour la logique.
La plus part des utilisateurs n’ont jamais touché à Dijit.
Il existe d’autre moyen d’obtenir des comportements légers et réutilisables comme le montre l’implémentation de Django Templating Language (DTL) dans Dojo.

L’intérêt pour Dojo décline

Pourquoi les gens pensent ça ? Peut-être une mauvaise interprétation des stats. Les gens comparent les stats Google pour des recherches comme « jQuery JavaScript » « Prototype JavaScript » « Dojo JavaScript », etc. parce que les mots qu’ils contiennent sont en conflit avec des termes de recherche généraux. Mensonge, foutu mensonge, et les statistiques d’utilisation, hein ?
Tandis que l’intérêt des autres grands toolkit a grossi de façon significative, l’utilisation de Dojo en fait de même. En se basant sur le nombre d’applications déployées, le nombre de téléchargement, le trafic sur le site, les livres vendus et quantité d’autre statistique, on peut dire que Dojo continu de grossir très rapidement. De part chaque mesure, on constate que l’intérêt en Dojo croit plus vite que jamais.
Ajax est devenu de plus en plus populaire et l’on considère maintenant JavaScript comme un vrai langage. Dojo à toujours traiter JavaScript comme un langage de première classe, et c’est concentré strictement sur l’utilité plus que sur un aspect particulier du workflow, comme le DOM.

Dojo n’est pas valide

Une longue et persistante plainte est que Dojo n’est pas valide. DTD != d’HTML valide. Les attributs personnalisés ont toujours été de l’HTML valide, c’est juste qu’ils ne sont pas validé lorsqu’on les teste avec une DTD.
Si la validation DTD est véritablement importante pour votre projet, il aussi bien simple d’utiliser Dojo avec élégante dégradation ; l’utilisation des attributs personnalisés est un pattern d’implémentation uniquement, pas un pré-requis pour Dojo. Sinon, vous pouvez toujours créer votre propre DTD.
En plus des bénéfices de performance et de l’efficacité des attributs personnalisés, ils sont bien plus utilisables et proche de notre compréhension que les autres options. Par exemple, certain toolkit utilise l’attribut rel et le remplisse de data. Le populaire meta plugin de jQuery ressemble à ça :

<div class="hilight { background: 'red', foreground: 'white' }">

. Pourquoi est-ce mieux que la syntaxe Dojo qui aurait put être :

<div jQueryType="hilight" background="red" foreground="white">

?
La spécification HTML fait état que tout les attributs non reconnu sont ignoré par les moteurs de rendu HTML dans les applications, et Dojo profite optionnellement des ces avantages pour améliorer la facilité de développement.

Dojo est laid

Créer de belles applications web demande une grande connaissance du style, de l’interactivité, de l’expérience utilisateur et des possibilités graphique. Dojo fourni 3 thème professionnel : Tundra, Soria et Nihilo. Si vous voulez les améliorer ou créer votre propre thème alors soyez impliqué!
Les thèmes de Dojo sont délibérément minimaliste pour rendre facilement adaptable les composants à des designs ou des marques existantes. Mais chez SitePen, dans nos travaux pour des clients nous avons appliqué nos CSS et nos designs sur des applications basés sur Dojo afin de créer d’excellent design et des expériences époustouflantes.

http://www.sun.com/software/convergence/

http://www.sitepen.com/blog/2007/11/11/eye-fi-launches/

http://www.sitepen.com/blog/2008/10/14/dojo-sensei-reader/

Beaucoup d’autre société ont aussi réussit à appliquer leur propre thème à des applications basé sur Dojo.

http://dojotoolkit.org/spotlight/esri

Dojo n’offre pas certaines fonctionnalités fournis par une librairie particulière

C’est peut-être le cas, ou c’est peut être appelé autrement, ou disponible dans une API différente. Mais Dojo offre une extrême flexibilité. Par exemple, consultez le travail de Peter Higgins pour ajouter l’API de footprint de jQuery qu’il aime et qui manque dans Dojo en mois de 1Ko.

Dojo ne fonctionne pas avec un toolkit, un environnement ou un serveur particulier

Nous faisons tout pour nous assurer que Dojo fonctionne avec tout, même si un toolkit ou un serveur ne dispose pas de ce que nous souhaiterions. Si quelque chose ne fonctionne pas pour vous, posez la question du les forums Dojo ou au support SitePen, et s’il s’agit d’un bug, ouvrez un ticket et il sera fixé au plus vite. Nous avons poussé très loin pour être sur que Dojo fonctionne bien avec tous les toolkit populaire, aussi bien que dans une variété d’environnement tel que : XUL, ligne de commande, Jaxer, Air, etc., le support des préconisations de l’alliance OpenAjax autant que l’intégration avec DWR, Persevere, Zend Framework, IBM Websphere, Django, Ruby On Rails, et beaucoup, beaucoup plus.
Dojo a été initialement conçut pour arrêté de réinventé la roue du DHTML, avec un code source original significativement basé sur le travail de toolkit plus anciens comme netWindows, BurstLib, et f(m).

Les gens chez Dojo n’aiment pas de projet en particulier

En général, d’un point de vue interpersonnel, nous sommes amis avec les gens qui on créé jQuery, Prototype, YUI, MooTools, et autre. Même si bien sûr les développeurs de Dojo ont des opinions différentes sur la meilleure approche pour le développement (les grands développeurs devrais toujours être en désaccord, tant qu’ils gardent le débat centré sur le mérite plus que sur la forme du message). Nous avons trouvé des fans de Dojo et d’autre toolkits qui essaye de créer une plus grande rivalité que les auteurs de toolkit ne le font. Après tout, nous sommes en train de parler de toolkit open source qui sont sous licence libre (BSD, AFL, MIT, Apache, etc.), donc il est dur pour nous de pas s’étendre. Alex Russel, Peter Higgins et moi sommes aussi sur un enregistrement pour inviter les autres toolkit à collaborer et coopérer pour encore une fois arrêter de réinventer la roue.

The Ajax Experience Browser incompatibility panel

Dans la plus part des cas, c’est un problème de perspective. Je sais que beaucoup d’entre nous restent bloqués non par parce que quelqu’un a mal fait son travail mais parce que certaines personnes critiquent les fonctionnalités d’un toolkit au profit d’un autre s’en même comprendre pourquoi cette fonctionnalité existe.

Il est difficile de contribuer à Dojo ou d’être impliqué

A la différence de beaucoup de toolkit, Dojo requiert une CLA qui protège les droits de votre IP, et aussi requiert que pour contribuer au code, vous en aillez le droit. La fondation Dojo fait cela pour être certaine que nous seront capable de redistribuer chaque partie du code présent dans le Toolkit de manière complètement gratuite, et sous licence libre. C’est un processus simple qui doit prendre maximum 15 minutes et il vaut bien ce petit effort.
Pour plus d’informations sur comment s’impliquer, contribuer, faire un don, visitez le site de la fondation Dojo et celui de Dojo Toolkit ou venez sur le salon irc de Dojo sur irc.freenode.net dans #dojo

Dojo manque de support commercial

Un certain nombre de société, en incluant SitePen, offre des services de développement, d’entrainement et de support pour Dojo. La communauté Dojo offre un magnifique support gratuit, mais quand les problèmes dépasse ce qu’il est raisonnable de demandé à un bénévole, ou ont besoin d’être pris en compte immédiatement et/ou sous un accord de non divulgation, les sociétés comme SitePen sont disponible pour vous aider à être productif, du fixe de bug dans Dojo jusqu’à packager et designer votre application.

Résumé

Comme vous pouvez le voir, Dojo a parcouru un long chemin depuis sa création initiale il y a plus de 4 ans. Pendant les prochains mois, les développeurs de Dojo vont continuer à améliorer les sources du toolkit, la documentation, et le marketing afin de rendre Dojo simple a utilisé sur tous types d’application ou de site web que vous développez.

J’espère que vous prendrez la décision d’utiliser, ou pas, Dojo en vous basant sur le mérite plutôt que sur des mythes ou des informations qui ne sont plus ou n’ont jamais été exactes.

Dylan Schiemann

A propos

Technophile passionné par le web, Je travaille actuellement en tant qu'Expert Dojo auprès de la banque ING aux Pays Bas. http://www.linkedin.com/in/santalucia

Publié dans actualités

Laisser un commentaire