web-dev-qa-db-fra.com

Différence entre Javascript intrusif et discret Javascript

Quelle est la différence entre javascript intrusif et discret - en langage simple. La brièveté est appréciée. De courts exemples sont également appréciés.

49
well actually

Je n'approuve plus cela car il était valide en 2011 mais peut-être pas en 2018 et au-delà.

Séparation des préoccupations. Votre code HTML et CSS ne sont pas liés à votre code JS. Votre code JS n'est pas en ligne avec un élément HTML. Votre code n'a pas une grande fonction (ou non-fonction) pour tout. Vous avez des fonctions courtes et succinctes.

Modular. Cela se produit lorsque vous séparez correctement les problèmes. Par exemple, votre superbe animation de toile n'a pas besoin de savoir comment fonctionnent les vecteurs pour dessiner une boîte.

Ne tuez pas l'expérience s'ils n'ont pas JavaScript installé, ou n'exécutent pas les navigateurs les plus récents - faites ce que vous pouvez pour dégrader gracieusement l'expérience.

Ne construisez pas des montagnes de code inutile quand vous avez seulement besoin de faire quelque chose de petit. Les gens compliquent sans cesse leur code en resélectionnant les éléments DOM, en faisant du HTML sémantique et en y jetant des ID numérotés, et d'autres choses étranges qui se produisent parce qu'ils ne comprennent pas le modèle de document ou un autre morceau de technologie - alors ils comptent sur des couches d'abstraction "magiques" qui ralentissent tout à la vitesse des ordures et apportent des montagnes de frais généraux.

36
Incognito

Aucun javascript dans le balisage n'est discret:

<div id="informationHeader">Information</div>

importun:

<div onclick="alert('obstrusive')">Information</div>
33
Joe
  1. Séparation de HTML et JavaScript (définissez votre JavaScript dans des fichiers JavaScript externes)
  2. Dégradation gracieuse ( des parties importantes de la page fonctionnent toujours avec JavaScript désactivé).

Pour une explication de longue haleine, consultez la page Wikipedia sur le sujet.

10
Matt

Pour développer la réponse de Mike: l'utilisation du comportement UJS est ajoutée "plus tard".

<div id="info">Information</div>

... etc ...

// In an included JS file etc, jQueryish.
$(function() {
    $("#info").click(function() { alert("unobtrusive!"); }
});

UJS peut également impliquer une légère dégradation (mon type préféré), par exemple, un autre moyen pour accéder à la #info fonctionnalité de clic, peut-être en fournissant un lien équivalent. En d'autres termes, que se passe-t-il s'il n'y a pas de JavaScript, ou si j'utilise un lecteur d'écran, etc.

3
Dave Newton

discret - "non intrusif; discret, non assertif ou réticent."

gênant - "avoir ou montrer une disposition à gêner, comme en s'imposant ou en se faisant une opinion sur les autres."

obtrude - "pousser (quelque chose) en avant ou sur une personne, surtout sans mandat ni invitation"

Donc, en parlant d'imposer ses opinions, à mon avis, la partie la plus importante du JavaScript discret est que du point de vue de l'utilisateur cela ne fait pas obstacle. Autrement dit, le site fonctionnera toujours si JavaScript est désactivé par les paramètres du navigateur. Avec ou sans JavaScript activé, le site sera toujours accessible aux personnes utilisant des lecteurs d'écran, un clavier et pas de souris et d'autres outils d'accessibilité. Peut-être (probablement) que le site ne sera pas aussi "sophistiqué" pour de tels utilisateurs, mais cela fonctionnera toujours.

Si vous pensez en termes d '"amélioration progressive", la fonctionnalité de base de votre site fonctionnera pour tout le monde, peu importe comment il y accède. Ensuite, pour les utilisateurs avec JavaScript et CSS activés (la plupart des utilisateurs), vous l'améliorez avec des éléments plus interactifs.

L'autre facteur "discret" clé est la "séparation des préoccupations" - quelque chose qui intéresse les programmeurs, pas les utilisateurs, mais cela peut aider à empêcher le côté JavaScript de faire obstacle à l'expérience des utilisateurs. Du point de vue du programmeur, éviter le script en ligne a tendance à rendre le balisage beaucoup plus joli et plus facile à maintenir. Il est généralement beaucoup plus facile de déboguer un script qui n'est pas dispersé sur un tas de gestionnaires d'événements en ligne.

2
nnnnnn