Je suis un utilisateur dojo (core) depuis quelques années maintenant. Construire mes propres widgets au sommet de l'espace dojo; négliger le dijit et le dojox. Travailler dans mon propre monde. Cela a eu des avantages, mais j'ai toujours eu l'impression de réinventer la roue tout en construisant un autre panneau à onglets, un carrousel ou une boîte de dialogue. J'ai donc décidé d'utiliser dijit.Dégradation gracieuse avec Dijit
Avec mes propres widgets, je me suis fixé quelques règles de base :
- Un widget doit se dégrader gracieusement [lorsqu'aucun js est chargé] pour l'accessibilité et le référencement
- Il devrait y avoir aucun redessine après le js est chargé (qui est toujours inclus dans la page html après tout, juste avant la fin balise body)
- Non inline JS (scripts doivent être séparés de HTML)
Problème:
Dijit a deux méthodes d'instanciation: déclarative et par programmation. De toute façon semble rompre l'une des règles.
a. déclarative instanciation:
On dirait soit quelque chose comme:
<div dojoType="MyFirstWidget">
<ul>
<li dojoAttachPoint="counter">0</li>
<li><a dojoAttachEvent="_updateCounter" href="#">Update</a></li>
</ul>
<script type="dojo/connect" event="onClick" args="evt">
console.log("This will execute after of the Button dijit's onClick method has been called.");
</script>
</div>
Comme vous pouvez le voir, ce casse clairement la règle 3 (pas js en ligne).
b. instanciation Programmatic:
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.declare("MyFirstWidget", [dijit._Widget, dijit._Templated], {
templateString: "<div class='awesome'>0</div>",
postCreate: function() {
console.log("postCreate");
}
});
(new MyFirstWidget()).placeAt(dojo.body());
Et ainsi, les règles 1 & 2 sont brisés. (1) Aucune valeur d'accessibilité ou de référencement (SEO) (2) Une fois le modèle défini, le navigateur devra redessiner la page entière.
Question: est-il possible (et pratique) d'utiliser dijit, tout en respectant les règles?