Etant donné à quel point le développement jQuery est simple, comparé au JavaScript natif, qu'est-ce qui pousse les gens à abandonner des bibliothèques comme jQuery?
Est-ce parce que jQuery a des limites ou est lent? Je veux dire, si jQuery est si facile comparé au javascript natif, quelles sont les raisons qui incitent les gens à utiliser encore du javascript pur?
XMLHttpRequest
vsActiveXObject
,addEventListener
vsattachEvent
,css selectors
vsxpath selectors
vsno selector support
, etc.). Dans les navigateurs récents, la plupart de ces problèmes ne existent, car ils suivent les mêmes normes.Réponses:
Parlons de voitures.
Oh, attends, nous l'avons déjà fait - tu te souviens de la fois où nous nous sommes rencontrés il y a quelque temps? Nous avons parlé de voitures. En fait, vous sembliez être un expert des voitures. Vous avez pu expliquer en détail tout ce qui était bien, ce qui était passionnant et ce qui était excitant à propos de la dernière course de Formule 1. Vous connaissiez par cœur tous les modèles Lamborghini, y compris leur prix et leur disponibilité. Vous pensiez même acheter votre propre Ferrari 599 GTB Fiorano et vous économisiez pour cela (je parie que le dîner-steak n’aide pas beaucoup).
Tout en expliquant les fautes de Toyota d'une voix enthousiaste et enthousiaste, vous avez soudainement sauté de votre chaise et crié en l'air, agitant les poings: je vais être un mécanicien automobile! "
Et vous y êtes allé. Vous avez eu une entrevue, le Boss Man a été aussi impressionné que moi par votre connaissance et vous avez été embauché. Le premier client est entré. Son embrayage était cassé. Vous l'avez inspecté et vous ne saviez pas quoi faire. En fait, vous ne saviez absolument pas comment suivre les conseils donnés par le Boss Man. Vous avez été viré.
Mais comment cela pourrait-il être!? Vous savez tout sur les voitures! Sauf pour ... tout ce qui concerne les voitures. Vous pouvez très bien savoir que la voiture de vos rêves a un moteur V12, mais vous ne savez pas ce que cela signifie réellement.
Donc, vous n'êtes pas un mécanicien automobile, vraiment - vous êtes un passionné de voiture. Et jusqu'à ce que vous appreniez comment les voitures fonctionnent , vous resterez un passionné.
Maintenant, laissez-moi vous demander. Comment ça
$.fn.text
marche? Et qu'en est-il$.fn
? Que signifient-ils vraiment? Comment$(something)
renvoie-t-il un objet gigantesque contenant des objets, et qu’est-ce exactement? Pouvez-vous reproduire leur fonctionnalité, au moins un peu, en théorie même? Pouvez-vous vous en sortir sans jQuery?Dire que "le JavaScript natif est difficile" est juste ... faux. D'abord et avant tout, parce que JavaScript en tant que langage n'a rien à voir avec le DOM , qui est principalement ce que jQuery résume. Deuxièmement, une fois que vous en apprendrez un peu plus sur le DOM, vous pourrez déjà parcourir les bogues les plus courants entre navigateurs. Mais juste un petit secret - tout est difficile au début. Longue division était une chienne en 5e année.
En tant que deuxième analogie pour cette réponse: jQuery est de JavaScript DOM (pas JavaScript la langue, tout le DOM) comme
Array.prototype.forEach
c'estfor
. Cela fonctionne dans 99% des cas. Et ça marche bien. Mais pour ce 1% qui n'est pas couvert, vous devez savoir utiliser lafor
boucle, ne serait-ce que pour être pratique. Toute cette réponse est basée sur le côté "plus pur" de la question, et même pas sur le côté technique (la taille de la bibliothèque, par exemple, et plusieurs autres choses, comme expliqué dans la réponse de Michael Dorrant). Parce que j'aime JavaScript et que les gens semblent juste le jeter de côté en disant "pah, ces idiots de javascript" et en agitant des gants blancs fantaisistes, cela relève de la moralité.Si vous pouvez accepter le fait que vous serez toujours un passionné de JavaScript, alors qui suis-je pour vous arrêter? Mais si vous voulez être un programmeur JavaScript, vous devez d’abord avoir les connaissances nécessaires pour choisir au moins entre l’utilisation de jQuery (ou de toute autre bibliothèque) et de ne pas utiliser de bibliothèque. Apprenez le DOM. Apprendre comment l'utiliser. Ecrivez votre propre petite bibliothèque ou juste une collection de fonctions d’aide. Et une fois que vous maîtrisez le DOM et que vous choisissez d’utiliser jQuery - godspeed. La paresse est attribuée à ceux qui ont travaillé dur.
la source
Raisons que je connaisse:
Lorsque le besoin est extrêmement minime, disons 1 onclick.
Lorsque la vitesse de téléchargement est critique et que la bibliothèque jQuery est trop volumineuse ET qu'il n'est pas nécessaire d'écrire beaucoup de code (personnalisé) pour le remplacer.
Lors de l'intégration à d'autres technologies, il est parfois préférable d'utiliser des fichiers bruts.
Lorsque vous travaillez sur un système existant (aussi appelé «production») déjà écrit en js avec des modèles établis.
la source
jQuery est simplement un framework - un ensemble d’outils écrits en JavaScript. En utilisant cet ensemble d'outils, vous utilisez toujours JavaScript. Certaines personnes préfèrent écrire du code JavaScript à l'aide des outils fournis par jQuery, certaines choisissent de ne pas le faire, d'autres choisissent d'autres ensembles d'outils.
Quelques raisons pour lesquelles vous pourriez vouloir écrire du JavaScript "pur" sans jQuery:
la source
jQuery, comme toute bibliothèque ou framework, ajoute une autre couche de bugs . Je l’adore, mais j’ai aussi perdu une journée à la recherche d’un bogue qui s’est avéré être dans le noyau de jQuery et non dans mon code (une occasion rare, mais pas si rare).
En dehors de cela, je ne trouve aucune autre raison de ne pas l'utiliser:
MAIS il ne devrait jamais être utilisé comme substitut de la connaissance Javascript. Si vous ne savez pas comment le faire en Javascript pur, vous pouvez vous en tirer avec une bibliothèque au début, mais vous allez le payer à long terme.
Et, bien sûr, nous sommes tous engagés dans un combat mortel avec IE6 depuis plusieurs années et nous ne lâcherons pas facilement nos vieux tours de lécole en faveur d’un nouveau jouet brillant.
la source
The huge gallery of plugins help me write prototypes in very short times
... Juste des prototypes, je les évite autant que possible dans le code de production. Il y a des plugins avec un code excellent, bien sûr, mais il faut chercher très dur pour eux ...Dans l'environnement du navigateur, vous avez besoin d'un outil de normalisation inter-navigateurs. Un tel outil est disponible en deux saveurs
Généralement, vous pouvez utiliser ces utilitaires de trois manières différentes.
addClass
ousetText
dans votre code quand et où vous en avez besoinVous avez besoin d'un mécanisme de normalisation, sinon vous n'obtenez aucun support pour tous les navigateurs.
En ce qui concerne l'utilisation d'un existant, c'est bien. Je ne voudrais tout simplement pas utiliser jQuery. Personnellement , je suis en train d' écrire ma propre bibliothèque ( DOM-shim il fixe les navigateurs sans exposer une API propietory étrangère. Il transforme votre navigateur en un seul bien comportés navigateur normalisé).
la source
Si vous n'avez pas besoin de la prise en charge de l'abstraction DOM, de plusieurs navigateurs et de navigateurs existants, vous pouvez facilement vous passer de jQuery.
C'est le cas lorsque vous développez des extensions de navigateur, des scripts greasemonkey (parfois), des tâches de calcul, développant pour Node.js ou d'autres environnements autres que des navigateurs.
la source
Avec les autres réponses ici, en particulier celle de Michael Durrant , je pensais que la vitesse était une raison majeure pour moi de choisir occasionnellement d’utiliser du code JavaScript brut.
Dernièrement, j'ai travaillé sur de nombreuses animations ou d'autres tâches gourmandes en ressources processeur. Parfois, le code JavaScript brut est beaucoup, beaucoup plus rapide que si je passais par jQuery.
Par exemple, je souhaitais modifier l'opacité d'un
position: fixed
élément en fonction de la distance parcourue par un utilisateur sur une page. L'effet était beaucoup trop lent lorsque j'ai utilisé jQuery pour cela, le défilement étant saccadé et l'effet de fondu perdu. Je suis passé à l’utilisation de JavaScript et tout était lisse et soyeux, sauf IE <= 8.la source
J'ai besoin de commencer ma réponse avec une honnêteté ouverte. J'aime jQuery. Cela me simplifie énormément la vie et rend le code JavaScript plus déclaratif, ce qui, à mon avis, devrait fonctionner.
jQuery fait beaucoup de choses…
Oui, vous pouvez ajouter des plugins
Oui, vous pouvez étendre les sélecteurs
Oui, cela simplifie l'animation
mais jQuery ne fait pas tout
Avez-vous déjà essayé de travailler dans plusieurs contextes de fenêtre avec jQuery? jQuery est incapable de gérer différents contextes de fenêtre car il conserve l'original
window
et ledocument
contexte de la fenêtre dans laquelle il a été appelé.J'ai écrit du code ici et là pour créer des popouts *, et jQuery peut tout simplement entraver ce que j'essaie d'accomplir. L'ajout d'une nouvelle référence à jQuery dans la fenêtre enfant peut souvent aggraver la situation en rendant plus difficile la détermination du contexte jQuery utilisé.
* Pensez à la popout de Gmail pour composer un email dans une nouvelle fenêtre, pas de publicité spammy
Utilisez-le quand cela simplifie le code
Il est temps d'utiliser jQuery lorsque vous pouvez rendre votre code plus simple, plus court, plus lisible et plus rapide.
Le temps de ne pas utiliser jQuery, c’est quand cela ne rendra pas votre code plus simple, plus court, plus lisible ou plus rapide. Si vous avez besoin d'ajuster les temps de chargement, vous pouvez ne pas utiliser jQuery en raison de la surcharge de l'événement.
la source
Comme vous le savez sûrement, jQuery est un framework à usage général qui fournit de nombreuses méthodes que beaucoup d’entre nous n’utilisons pas dans nos projets. (Certains d'entre eux je n'ai pas utilisé du tout.)
Il y a deux raisons principales pour ne pas utiliser jQuery ou tout autre framework bien établi.
1. Le projet n'est pas assez grand ni complexe pour utiliser un tel cadre: dans ce cas, le codeur prend une décision éclairée en fonction de son expérience et de ses connaissances en JavaScript. Cela l'aidera à réduire le poids de la page et à mieux contrôler le code.
2. Le codeur développe son propre framework. J'ai vu un projet dans mon entreprise qui possède son propre framework JavaScript. La raison pour laquelle ils citent est que s'ils utilisent jQuery et qu'il y a un bogue pour le corriger, ils doivent attendre la prochaine version. De plus, s’il ya une fonctionnalité à ajouter, ils doivent en demander à l’équipe jQuery ou ajouter un plugin, bien qu’il ne soit pas judicieux d’en faire un plugin (ils ont donné l’exemple pour avoir utilisé une
.live
chose similaire dans leur cadre avant même son ajout officiel à JQuery). Avoir votre propre framework vous donne plus de contrôle sur le code. L'inconvénient est que vous devez réinventer la roue en ce qui concerne les problèmes de compatibilité de navigateur, etc. De plus, si le processus de développement n'est pas bon, votre environnement va gonfler et ne fera qu'augmenter le temps nécessaire pour le maintenir.la source
Mike
Je pense que les gens qui se protègent contre l’utilisation de certaines bibliothèques sont dus à la dépendance de cette solution infrastructure / bibliothèque pour effectuer certaines tâches.
Mais faisons attention de ne pas oublier que les langues vont et viennent comme des bibliothèques à long terme.
Alors peut-être que c'est la portée temporelle. Les gens hésitent peut-être à investir dans une bibliothèque qui n’existe peut-être pas ou ont autant d’élan derrière elle à long terme.
Moi même? Je n'ai aucune objection à utiliser JQuery en particulier. Je regarde aussi, disons, Box2d.js ou three.js et je les préférerais de beaucoup les accepter, même si leur durée de vie est de courte durée, plutôt que de manquer des fruits qu’ils ont à offrir.
En résumé, Mike pense que la durée de conservation d'une bibliothèque que vous choisissez est risquée. Je pense que certains membres de la communauté javascript ont peut-être subi une perte en raison de la fin d'une bibliothèque ou d'un projet et ont peut-être simplement dit - plus jamais.
la source
Je dirais que le principal problème est que de plus en plus de personnes (la grande majorité?) Ne savent plus comment coder en JavaScript. Si jQuery ne peut pas faire quelque chose, ils ne peuvent pas le faire.
Nous en arrivons au point que les exemples javascript simples deviennent difficiles à trouver. Rien contre jQuery; c'est un super cadre. J'ai eu beaucoup de bonnes idées, mais les gens devraient d'abord apprendre le JavaScript, puis un framework. Personnellement, je trouve mon propre cadre plus flexible et mieux adapté à mes besoins, et oui, je réinvente parfois la roue, mais le contrôle total et la maîtrise des corrections de bugs sont un énorme avantage, à condition que vous vouliez mettre le travail à l’apprentissage de JavaScript.
Non seulement que. La connaissance de JavaScript vanille rend le jeu plus amusant et l’expérimentation avec les nouvelles fonctionnalités au lieu d’attendre une implémentation basée sur un framework. De plus, jQuery n’est pas responsable de cela, il s’agit principalement d’une bibliothèque DOM , mais il peut être difficile de s’adapter aux grands projets. D'autres cadres font un meilleur travail à cet égard; Le prototype vient à l'esprit.
En bref, c'est un excellent cadre, mais ce n'est pas ce que tout le monde prétend être.
la source
Je peux ajouter deux autres raisons qui n'ont pas été mentionnées:
Souvent, lorsque je découvrais une nouvelle technologie, je commençais par des constructions de niveau inférieur avant d’utiliser des constructions de niveau supérieur. Je suis avant tout un développeur C ++ / C #, mais il y a quelque temps, lorsque j'ai commencé à utiliser HTML / CSS / JavaScript, j'ai choisi de ne pas utiliser de cadre, car je voulais d'abord comprendre la technologie (c'est-à-dire le code JavaScript). langage lui-même) que ces cadres sont construits sur.
Je ne sais pas à quel point c'est courant, mais pour moi, il me semble qu'il y a beaucoup de gens qui, lorsqu'ils voient le prochain cadre / technologie / langage, leur première réponse est "pas une autre API à apprendre pour moi!" Ils ne se soucient pas de la facilité avec laquelle jQuery est, mais ils le voient simplement comme un obstacle entre eux et pour fournir du travail en utilisant leurs méthodes «vraies et éprouvées». Il s’agit de la même catégorie de personnes qui refusent d’utiliser la bibliothèque Boost ou l’un quelconque des fichiers STL et continuent d’utiliser malloc pour à peu près tout. Vous leur avez demandé pourquoi ils choisissaient du JavaScript pur sur jQuery et, en réalité, ils n'ont jamais fait le choix, car ils refusaient la plupart du temps d'évaluer jQuery et étaient parfaitement satisfaits de leur rythme de développement actuel, aussi lent soit-il.
la source
jQuery est une bibliothèque écrite en et pour JavaScript. L'idée est qu'il simplifie toutes les tâches difficiles / fastidieuses de JavaScript, accélérant ainsi le temps de développement et rendant vos scripts beaucoup plus susceptibles de fonctionner avec plusieurs navigateurs.
Pourquoi jQuery est-il préférable d'utiliser:
Voici les raisons pour lesquelles JavaScript est préférable à l'utilisation que jQuery:
Pour ces raisons, j'aime utiliser JavaScript pour éviter le framework jQuery. Il vaut bien mieux apprendre le JavaScript plutôt que de dépendre d’une telle bibliothèque ...
Même si vous souhaitez les étendre, vous devez écrire du code en JavaScript. Ce qui est aussi une grande conversation. Les développeurs deviennent dépendants de ces bibliothèques. Par conséquent, pour contrôler les projets, JavaScript est préférable à l'utilisation de frameworks.
la source
Je pense que les gens utilisent jQuery parce que c'est plus simple, plus facile et plus puissant, et parce que cela les aide à oublier IE. En outre, pour les fonctionnalités personnalisées, les utilisateurs utilisent javascript. Essayez de vous référer au DOC pour plus de détails
la source