Je suis assez nouveau dans notre équipe de développeurs.
J'ai besoin d'arguments solides et / ou d'exemples "d'écueils", donc mon patron comprendra enfin les avantages de JavaScript discret, de sorte que lui et le reste de l'équipe, cessent de faire des choses comme ça:
<input type="button" class="bow-chicka-wow-wow"
onclick="send_some_ajax(); return false;" value="click me..." />
et
<script type="text/javascript">
function send_some_ajax()
{
// bunch of code ... BUT using jQuery !!!
}
</script>
J'ai suggéré d'utiliser un modèle assez courant:
<button id="ajaxer" type="button">click me...</button>
et
<script type="text/javascript">
// since #ajaxer is also delivered via ajax, I bind events to document
// -> not the best practice but it's not the point....
$(document).on('click', '#ajaxer', function(ev) {
var $elem = $(this);
ev.preventDefault();
});
La raison pour laquelle mon patron (et d'autres) ne veut pas utiliser cette approche est que l'inspection des événements dans FireBug (ou Chrome Dev Tools) n'est plus simple, par exemple avec
<input type="text" name="somename" id="someid" onchange="performChange()">
il peut immédiatement voir quelle fonction s'exécute sur change-event et y accéder directement dans un énorme fichier JS plein de spaghetti-code .
Dans le cas de JavaScript discret, la seule chose qu'il verrait est:
<input type="text" name="somename" id="someid" />
et il n'a aucune idée si certains événements, le cas échéant, étaient liés à cet élément et quelle fonction sera déclenchée.
Je cherchais une solution et je l'ai trouvée:
$(document).data('events') // or .. $(document).data('events').click
mais, cette "approche" a mis "trop longtemps ..." à découvrir quelle fonction se déclenche sur quel événement, donc on m'a dit d'arrêter de lier des événements comme ça.
Je vous demande quelques exemples ou de forts avantages ou tout autre type de suggestions pour "Pourquoi nous devrions utiliser UJS"
MISE À JOUR: la suggestion de "changer le travail" n'est pas une solution idéale.
MISE À JOUR 2: Ok, je n'ai pas seulement suggéré d'utiliser la liaison d'événements jQuery, je l'ai fait . Après avoir écrit toute la délégation d'événement, le patron est venu me voir et m'a demandé pourquoi je fais la délégation d'événement avec une approche différente et une approche qu'il ne connaissait pas.
J'ai mentionné des avantages évidents, comme - Il y a 15 champs de saisie et tous ont alors un onchange
événement (non seulement, certains d'entre eux en ont aussi onkeyup
) Il est donc plus pragmatique d'écrire ce type de délégation d'événement pour TOUS les champs de saisie, au lieu de le faire 15 fois, surtout si tout le HTML sera rendu avec l'écho de PHP ->echo '... <input type="text" id="someid" ... />...'
js-this-class-do-something
classe, vous pouvez donc facilement CTRL + F pour cela dans le code.