Après avoir joué avec AMD/RequireJS, je me suis demandé si c'était une bonne idée de charger les modules d'interface utilisateur, y compris les modèles et les CSS, de manière à ce qu'ils soient complètement indépendants de la page Web.
Cela semble être une bonne chose, mais je n'ai pas vu cette mise en œuvre dans la nature, il peut donc y avoir des écueils.
Pensez à un module d'interface utilisateur ayant la structure suivante :
myWidget
|--img
|--main.js
|--styles.css
+--template.tpl
Toutes les affaires dans un seul dossier. C'est très joli.
Le module dans main.js ressemblerait à quelque chose comme ceci :
define(["TemplateEngine", "text!myWidget/template.tpl"], function(TemplateEngine, template) {
// Load CSS (Pseudo Code)
var cssUrl = "myWidget/styles.css";
appendToHead(cssUrl);
return function() {
return {
render: function(data) {
return TemplateEngine.toHtml(template, data);
}
}
}
});
Les questions sont maintenant :
- Est-ce que j'ai manqué quelque chose ?
- Existe-t-il des plugins/concepts permettant de réaliser cela de manière "standard" ?
- L'optimiseur RequireJS est-il capable de gérer la partie CSS ici, disons concaténer/minifier les feuilles de style comme il le fait avec les parties JS ?
- Des avis sur ce sujet ? Bon ou mauvais ?