Bonjour,
je me pose une question par rapport aux ImageResource GWT. Pour utiliser une ImageResource en tant que tag HTML, j'ai basiquement deux possibilités:
- Passer par ImageResourceRenderer
1 2
| ImageResource resource = MyResources.INSTANCE.myImage();
String html = new ImageResourceRenderer().render(resource).asString(); |
- Passer par le CSSResource et utiliser par exemple @sprite ou gwt-sprite
1 2 3 4
| .myClass {
display:inline-block;
gwt-sprite: 'myImage';
} |
1 2
| String cssClass resource = MyResources.INSTANCE.css().myClass();
String html = "<span class=\""+cssClass+"\"></span>"; |
Le second me semble moins propre à lire dans le code java et nécessite la création de règles css en tandem avec chaque image. En plus il présuppose que le browser arrivera à gérer mon span.
Mais le premier a l'inconvénient de multiplier dans le DOM généré les
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABeUlEQVR42p1SO0sDQRD+ctnLmYe5RAMWonZWBokaH1iJj0ZExEpsRAgJ+AOE9DaKREsL7bQKGBBBEEUrbSXa2guCoBFBY84ZL3uJl1xQBz5Y5nvM3s0CtRWKCmzOa7hc1pBn8LlHYIM4HY2qU2ByUcPtQwtKRgRGNbi3QGGkmahrblcxnPbiXhoeW2EcBU3wWfZXSdMGDNn9yowHV6WyaCcAI+CCQf1veOmc8Zsca6ZUXLPHckfcmD7T8coCniiNdhwHzZATHYUweayAuIq9Ynl6r3AOiAlT807oU7FrBYx7kJXfqLmcA5iTujGBrBUwouJAEh2Kc0CXUgkYVbFfWZ+C5E0IRSbSPueANZ9pzofx2e1GonoLzUsa7ph8o5XNemrNc9T7KE9PkJZ6/h97jCpYyQXxJK94SH882QQjRcgFK1dnTUxBqu5jGhDInOt4sb9CCeZY0/A5Dwqsn+p4tpsvQijEBbbwm7KH/MlsD/mXWVa/wDajkeYLXm/okfmYvkAAAAAASUVORK5CYII=" border="0" width="16" height="16">
même si c'est la même image qui est utilisée 40 fois.
Ici c'est bien sur un example où le compilateur GWT n'a pas décidé de créer une image sprite regroupant tout, mais il pourrait le faire.
Alors, question vaut-il mieux passer par le renderer ou les classes Css, d'un point de vue support et performance?
Partager