Quels sont les avantages du développement JavaScript natif? [fermé]


33

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?


1
jQuery est juste une bibliothèque - l'écriture de JS natif qui utilise jQuery écrit toujours de JS natif. C'est comme demander: "Quels sont les avantages du développement en C ++ natif?" quand vous parlez de "développement C ++ sans Boost".
Zach


1
L'objectif principal de jQuery et d'autres anciennes bibliothèques était de créer une façade au-dessus de différents navigateurs avec différentes interfaces js (par exemple, XMLHttpRequestvs ActiveXObject, addEventListenervs attachEvent, css selectorsvs xpath selectorsvs no selector support, etc.). Dans les navigateurs récents, la plupart de ces problèmes ne existent, car ils suivent les mêmes normes.
Inf3rno

Réponses:


89

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.textmarche? 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.forEachc'est for. Cela fonctionne dans 99% des cas. Et ça marche bien. Mais pour ce 1% qui n'est pas couvert, vous devez savoir utiliser la forboucle, 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.


15
Une longue division est toujours difficile!
Raynos

13
@anonymousDownvoter Priez pour expliquer. Est-ce parce que tu es végétarien? Je peux changer le steak en tofu-hamburger, mais je ne peux honnêtement pas dire qu'il existe un truc comme "un excellent tofu-hamburger"
Zirak

10
+1 "Comment $ (quelque chose) renvoie-t-il une chose gigantesque contenant des choses, et quelle est cette chose exactement?" Hah!
ThinkingStiff

3
De plus, @Mike, c'est criminel, cela n'a jamais obtenu de statut de réponse car c'est pur! @ # $ Ing génie.
Erik Reppen

5
"excellent steak" dans le message est une faute de frappe volontaire, n'essayez pas de le modifier. Si nécessaire, référez - vous à cette méta-discussion à ce sujet
Gnat,

12

Raisons que je connaisse:

  1. Lorsque le besoin est extrêmement minime, disons 1 onclick.

  2. 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.

  3. Lors de l'intégration à d'autres technologies, il est parfois préférable d'utiliser des fichiers bruts.

  4. Lorsque vous travaillez sur un système existant (aussi appelé «production») déjà écrit en js avec des modèles établis.


13
Je me demande combien de fois # 2 se révèle être vrai. Vous sauvegardez un téléchargement potentiellement mis en cache de 92 Ko, mais vous finissez par écrire beaucoup plus de code JS standard.
Adam Rackis

4
Je n'en sais rien. Vous pouvez conserver le JS selon vos besoins plutôt que d'inclure la bibliothèque entière pour un sous-ensemble de fonctionnalités.
Ryan Kinal

4
@Ryan Kinal - Adam Rackis a un bon point, et si vous utilisez l'API de Google pour charger Jquery, vous pouvez le charger depuis le même endroit où l'utilisateur l'a probablement déjà récupéré.
Ben DeMott

Je ne suis pas d'accord avec # 4. Si le code hérité est horrible et que tous les membres de l'équipe sont d'accord, c'est une bonne idée d'ajouter jQuery et de l'utiliser dans le futur code.
ThiefMaster

7

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:

  • Les pages se chargent plus rapidement sans inclure de fichiers jQuery supplémentaires
  • Certains frameworks peuvent être incompatibles avec jQuery
  • Le code en cours d’écriture ne fait rien que jQuery aide à
  • Le code est en cours d’écriture et ne peut être utilisé que par jQuery, ce qui rendrait le partage plus difficile.
  • L'auteur de code veut plus de contrôle que jQuery n'en fournit

5

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:

  • Les frais généraux sont minimes, surtout si vous utilisez la version hébergée de Google ,
  • Cela aide les développeurs Javascript moins expérimentés à écrire du code plus propre et plus efficace,
  • C'est surtout multi-plateforme, ce qui peut sauver des vies lorsque vous devez faire face à des navigateurs plus anciens,
  • L’immense galerie de plugins m’aide à écrire des prototypes en très peu de temps,
  • Le DOM a du sens,
  • bla bla bla ...

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.


2
Vous utilisez des plugins jQuery? La plupart d'entre eux ne sont-ils pas horriblement buggés et pleins de codes lents et mauvais?
Raynos

@Raynos 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 ...
yannis

prototypes signifie généralement "aurait dû être un jetable mais est maintenant un code de production". Si vous les utilisez sur des prototypes jetables, tout va bien.
Raynos

@Raynos Le prototypage ne concerne pas uniquement les prototypes jetables. Le prototypage évolutif est un processus fondamental du développement Web ... - comment ça se fait, pour une réponse tardive: P
yannis

Le "prototypage évolutif" s'appelle "couper d'énormes coins maintenant et espère que nous en retirerons plus que le coût de toute cette dette de code que nous allons obtenir". Ce qui, bien sûr, n’est valable que si les moindres recoins vous mettent dans le laps de temps magique dont vous avez besoin pour que votre entreprise devienne un succès. C'est un prêt.
Raynos

5

Dans l'environnement du navigateur, vous avez besoin d'un outil de normalisation inter-navigateurs. Un tel outil est disponible en deux saveurs

  • encapsule les objets hôtes avec de nouveaux objets qui se comportent de la même manière sur les navigateurs
  • étendre les objets hôtes pour implémenter l'API DOM.

Généralement, vous pouvez utiliser ces utilitaires de trois manières différentes.

  • utilisez de petites fonctions comme addClassou setTextdans votre code quand et où vous en avez besoin
  • écrire votre propre bibliothèque de normalisation multi-navigateurs
  • utiliser un existant.

Vous 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é).


3

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.


2

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.


2

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 windowet le documentcontexte 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.


2

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 .livechose 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.


0

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.


0

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.


2
Votre réponse serait plus forte si elle était moins décente et plus axée sur les détails.

Cet article est plutôt difficile à lire (mur de texte). Pourriez - vous l' esprit modifier ing dans une meilleure forme?
moucher

0

Je peux ajouter deux autres raisons qui n'ont pas été mentionnées:

  1. 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.

    • Cela dit, j'ai découvert jQuery depuis et je ne voudrais plus jamais revenir au codage à la main de ce que jQuery peut faire pour vous en une ou deux lignes de code.
  2. 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.


1
Les gens choisissent JavaScript pur sur jQuery car jQuery est une couche d'abstraction horrible qui n'est pas nécessaire.
Raynos

Bien sûr, il cache les différences entre les navigateurs, ce qui est très important en soi
Kos

@Raynos: Je ne suis pas vraiment un expert en technologie Web et à peine un amateur, alors je ne peux pas vraiment défendre jQuery. Mais vu le peu que j'ai vu, ça a été très bon pour moi. jQuery ajoute un autre outil à votre boîte à outils. Vous pouvez l'utiliser autant ou aussi peu que vous le souhaitez. Cela ne vous a jamais empêché d'écrire du Javascript pur en cas de besoin En même temps, certaines lignes peuvent être accomplies avec quelques lignes de code et il vous faudra plusieurs jours pour écrire. Si cela fonctionne, utilisez ces deux lignes. Si ce n'est pas le cas, lancez le vôtre. Dire que tout est horrible revient à acheter un tournevis puis à se plaindre que c’est un ...
DXM

... horrible outil pour enfoncer des clous parce que le manche n'a pas assez de poids
DXM

1
Vous n'avez pas besoin de jQuery . Les navigateurs ont cette API appelée DOM qui vous permet de faire tout ce que vous voulez. Les problèmes inter-navigateurs peuvent être résolus à l'aide de polyfills jQuery est une bibliothèque médiocre et une solution médiocre au support de navigateur hérité.
Raynos

-1

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:

  • Vite
  • Bibliothèque JavaScript légère
  • CSS 3 compatible
  • Prend en charge de nombreux navigateurs.
  • Le framework jQuery est extensible et gère les manipulations DOM, CSS, Ajax , les événements et les animations.

JavaScript est un langage alors que jQuery est une bibliothèque écrite en JavaScript.

Voici les raisons pour lesquelles JavaScript est préférable à l'utilisation que jQuery:

  1. Il charge la totalité de la bibliothèque de scripts jQuery à chaque fois avec la page. C'est un inconvénient pour le site Web de traitement de requêtes peed / rapide.
  2. Parfois, le cadre jQuery s'effondre / entre en conflit avec d'autres cadres.
  3. Si vous écrivez du code simple pour sélectionner simplement un élément et afficher alter, le JavaScript natif est bien meilleur.
  4. Si les opérations sont petites et effectuées dans quelques lignes de code JavaScript, l'utilisation de jQuery n'est pas recommandée.

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.


1
"gère très bien les manipulations DOM" Lol QUOI?
Incognito

merci @Incognito de me le faire savoir .. Mais est bien meilleur que d’autres bibliothèques. keyframesandcode.com/resources/javascript/deconstructed
Niranjan Singh

1
Le lien est carrément faux. jQuery prenant en charge les sélecteurs psudo-css via sizzle n’a rien à voir avec le DOM.
Incognito

bien c'est ok .. même si j'ai appris de vous à ce sujet .. pouvez-vous me donner un lien ou des informations à ce sujet ... j'ai mis à jour la réponse ..
Niranjan Singh

yuiblog.com/blog/2006/10/20/video-crockford-domtheory est un bon début, alors lisez les spécifications w3c sur le DOM.
Incognito

-4

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.