Actuellement en plein développement dans le cadre d’un projet universitaire, j’ai pour la première fois intégré le JS dans mon approche initiale. Jusqu’à présent, le JS était un outil que j’aimais très peu utiliser et que j’avais beaucoup de mal à maîtriser - le premier point ne facilitant pas le second -, donc que je m’efforçais d’éviter au maximum.
Il faut dire que les arguments contre l’utilisation du JS étaient légion. A l’époque où je me formais au développement web, beaucoup de sites utilisaient très mal le JS : recours aux pop-ups, scripts lourds fatiguant les petites configurations auxqueslles j’ai toujours été habitué, utilisation du JS pour mal faire ce qui pouvait être fait en PHP… Sans compter le fait que le JS pouvait masquer ou créer de gros problèmes d’accessibilité ou de normalisation : étant donné que c’est un langage côté client (c’est-à-dire que, contrairement au PHP, il ne nécessite pas un serveur pour être interprété), les modifications qu’il fait à la page (ajout de texte, changement d’apparence, etc.) ne sont pas répercutées dans le code source (code interprété transmis par le serveur au client). Lorsqu’on cherche à valider la page, ce qui apparaît valide ne l’est pas forcément.
Du coup, si j’ai jeté un oeil au JS, c’était à l’origine plus pour apporter de l’eau à mon moulin de critiques. Et honnêtement, le modèle objet de JS, c’est-à-dire la façon dont sont structurés tous les éléments d’une page, n’est pas ce qu’il y a de plus simple. Il est même plutôt compliqué, au point que les scripts JS manipulent rarement les objets en faisant référence à leur chemin complet, mais plutôt à leur nom (attribut name) ou à leur identifiant (attribut id).
Plus je développais, plus je prenais en compte des besoins que j’avais négligé dans mes premières réalisations, essentiellement concernant l’ergonomie de l’interface utilisateur d’un site web. La progression de l’interactivité entraîne en effet la multiplication des formulaires, outil très pratique pour transmettre de l’information du client vers le serveur. Or les formulaires, codés en (X)HTML, ont très peu de fonctionnalités et d’options par défaut. En fait, à part quelques options comme la taille, le style ou le nombre maximal d’informations acceptées, on ne peut rien paramétrer : pas de vérification des données, pas d’assistance dynamique à la saisie, sans nécessaire envoi au serveur et recours à un script PHP (généralement peu sympathique à développer).
Dans ce genre de situations, assez nombreuses, une utilisation mesurée du JS prend tout son sens et permet d’accroître le confort d’utilisation. On peut ainsi, assez facilement, vérifier avant l’envoi du formulaire que tous les champs exigés sont remplis, s’assurer lors de la frappe que les informations saisies sont valides (pour une adresse e-mail, par exemple, ou un numéro de téléphone), rendre le formulaire dynamique en affichant/masquant des champs en fonction des réponses fournies… Ceci ne dispense évidemment pas de fournir une alternative au JS (via la balise noscript), ni de développer un script de traitement en PHP (ne serait-ce que pour des raisons de sécurité).
Comme toujours, le tout est de savoir utiliser le JS à bon escient. Trop souvent, on voit des sites où le recours au JS n’est là que par souci du webmaster d’utiliser toutes ses compétences ou de valoriser ses derniers apprentissages. Ce n’est clairement pas un comportement correct pour un développeur, qui doit à mon avis avoir deux préoccupations primordiales :
- l’optimisation de l’interface d’utilisation, c’est-à-dire la simplification constante de la prise en main de sa réalisation par l’utilisateur ;
- le respect des standards gouvernant les technologies utilisées.
Pour le JS comme pour toute autre technologie, un bon développeur saura faire les choix qui respecteront strictement ces deux contraintes. Il ne subordonnera pas le résultat aux moyens utilisés, mais saura choisir les technologies en fonction d’un cahier des charges précis.