Comment les composants web ambitionnent de révolutionner les applications en ligne

Les composants web ne sont (encore) pas très connus de la communauté, pourtant ils représentent une avancée majeure dans la standardisation des interfaces web. À l’origine, HTML est un langage conçu pour créer des pages web, donc un réceptacle à textes, images et tableaux. Le W3C y a rapidement ajouté les formulaires en ligne pour offrir aux pages web un minimum d’interactivité. Après deux décennies de pratiques, HTML se révèle être une technologie robuste et mature pour la plupart des sites web (sites rédactionnels, portails, boutiques en ligne…), en revanche, les choses se compliquent dès qu’il est question d’applications en ligne. Si les dernières balises introduites dans HTML5 permettent de mieux structurer les contenus (je pense notamment aux balises Nav, Article, Footer ou Aside), rien n’a été prévu pour les applications. Il en résulte une utilisation anarchique de CSS et javascript pour pouvoir reproduire ce que nous connaissons dans les interfaces des logiciels.

code-mess

Pour couronner le tout, nous assistons à un authentique raz-de-marée des terminaux alternatifs (smartphones, tablettes, montres connectées…) qui complique encore plus les développements nécessaires pour assurer une bonne comptabilité d’une application en ligne. La promesse des web components est d’aider les développeurs à créer, distribuer et exploiter des composants réutilisables. Le terme exact est « encapsuler », car l’idée est de fournir des composants prêts à l’emploi, un peu comme les players de YouTube ou Slideshare. Prenons l’analogie du secteur automobile : les constructeurs ne produisent pas 100% des voitures, elles s’appuient sur des équipementiers qui leur fournissent des composants standards pour les phares, les essuie-glaces… bref, des composants génériques qui accélèrent la mise sur le marché.

La révolution induite par les web components est de pouvoir grandement accélérer le développement d’applications en ligne multi-plateforme (desktop, laptop, tablette, smartphone…) en s’appuyant sur des composants génériques que l’on intègre avec une simple ligne de code. Certes, il existe de nombreuses librairies d’éléments d’interface comme jQuery UI, Sencha Ext JS ou Dojo (cf. Sencha lance une nouvelle version de GXT pour accélérer le développement d’applications web), mais elles sont lourdes à charger et pas nécessairement modulaires. La possibilité de n’encapsuler que les composants web de votre choix est un plus indéniable pour éviter d’avoir à charger plusieurs fichiers javascript volumineux.

Google est aujourd’hui le plus gros sponsor des web components, notamment à travers Polymer, le framework exploité sur la future nouvelle version d’Android (cf. Avec Polymer, Google veut faire d’Android une interface universelle). Chrome est ainsi le premier navigateur à être officiellement compatible avec les web components (depuis la version 26). Pour vous donner une idée de ce à quoi peut ressembler une application en ligne construite à partir de composants web, je vous incite à visiter les démos suivantes : Foodtrack, Caclulator ou Topeka.

topeka

Ceci étant dit, Google n’est pas le seul promoteur des composants web, puisque le W3C a commencé ses travaux de normalisation des Web Components en juillet dernier. Il existe aussi d’autres initiatives comme Bosonic ou celles lancées par Mozilla : X-Tag et surtout Brick qui vient d’annoncer sa V2 (Build better HTML5 UIs with Mozilla’s latest Brick library).

brick-tabbar

Il existe de nombreux articles décrivant les bases des composants web (An Introduction to Web Components and Polymer) et même un portail officieux (WebComponents.org) où l’on trouve tout une série d’articles et des présentations. Les composants web étant librement distribuables sur le web, vous imaginez que leur recensement peut poser problème. Heureusement il existe déjà des collections en ligne comme BuiltWithPolymer, CustomElements ou Component Kitchen (où l’on trouve de très belles choses comme l’interface Akyral).

akyral_layout

Je sais bien que ce n’est pas la première fois que vous entendez parler d’une technologie révolutionnaire qui va transformer la façon de faire ci ou ça, mais je peux vous garantir que ces web components présentent le potentiel pour modifier de façon irrémédiable la façon dont sont codées les interfaces des applications en ligne. Nous aurons l’occasion d’en reparler…