J'utilise jQuery sur plusieurs de mes sites Web et bien que j'utilise un CDN pour le servir, cela n'a tout simplement pas de sens pour le visiteur de télécharger jQuery à chaque fois. jQuery doit être le framework JavaScript le plus utilisé au monde - cela n'aurait-il pas plus de sens si les navigateurs l'ont simplement installé par défaut?
De cette façon, des millions de fois par jour, un téléchargement de jQuery pourrait être empêché. Soit à partir des sites Web des gens, soit à partir des CDN.
Tout ce qui serait vraiment nécessaire est une sorte de déclaration if comme:
<!--[if jQuery gt 11]>
Existe-t-il quelque chose qui m'aidera à empêcher les utilisateurs de se rendre sur le CDN s'ils ont déjà jQuery dans leur cache à partir d'un autre site?
Réponses:
Si vous diffusez jQuery à partir d'un CDN populaire tel que les bibliothèques hébergées de Google ou cdnjs , il ne sera pas téléchargé à nouveau si votre visiteur a été sur un site qui l'a référencé à partir de la même source (tant que la version en cache n'a pas expiré).
jQuery est une bibliothèque populaire, comme vous le dites, mais il est peu probable qu'elle soit regroupée avec le navigateur pour plusieurs raisons:
la source
Non seulement jQuery n'est pas la seule bibliothèque JS populaire, mais un navigateur devrait potentiellement inclure plusieurs versions. Le CDN de Google répertorie actuellement: 42 versions de jQuery; 44 versions de jQuery UI; 6 versions de jQuery Mobile.
Il est préférable de permettre aux développeurs Web de définir la version d'une bibliothèque à télécharger en fonction des exigences de leur site Web. Si vous utilisez une version de production actuelle de jQuery sur votre site Web et que vous la chargez à partir d'un CDN plus populaire, il y a de fortes chances que vos visiteurs l'aient déjà mis en cache de toute façon.
la source
Le navigateur est le moteur, il n'est pas du devoir du concepteur de moteur de savoir quel type de carburant et de pièces supplémentaires allez-vous mettre dans votre voiture et de l'inclure pour vous. S'ils le faisaient, les navigateurs seraient un énorme bloatware car la question suivante serait "pourquoi juste jQuery?", Et nous finirions par maintenir des référentiels de dépendances.
De plus, inclurons-nous toutes les versions? Que faire si quelqu'un souhaite utiliser une version personnalisée? Et si quelqu'un n'aimait pas utiliser cette bibliothèque? À quelle fréquence fusionneront-ils et déploieront-ils les dernières versions? Allons-nous nous retrouver avec différents navigateurs avec différentes jQuerys versionnées? Ils ne peuvent même pas implémenter également des fonctionnalités HTML, CSS et JavaScript standardisées. Que se passe-t-il si l'un des mainteneurs du navigateur n'inclut pas une bibliothèque ou sa version spécifique?
Les navigateurs fournissent des blocs de construction et un environnement pour vous permettre de créer une solution qui n'est pas déjà terminée.
Mettre jQuery dans le navigateur ne va pas rendre votre site incroyablement rapide car de nos jours ce n'est pas le plus gros goulot d'étranglement, mais nous pouvons convenir que jQuery est une bibliothèque inutilement grande mais son but n'était jamais d'être une bibliothèque rapide (compte tenu bande passante). Il existe de nombreuses autres bibliothèques spécialement conçues pour un chargement rapide et pour être légères comme Zepto .
Si vous êtes vraiment préoccupé par la taille et l'utilisation de la bande passante de jQuery, ne l'utilisez pas. Avez-vous déjà entendu parler de Vanilla JS ? C'est une bibliothèque encore plus populaire qui est utilisée littéralement par presque tout le monde, y compris jQuery lui-même! Et il a déjà réalisé votre rêve car il est inclus dans tous les navigateurs!
la source
Une raison d'utiliser une bibliothèque comme jQuery est la compatibilité.
Les navigateurs sont devenus plus conformes aux normes, mais en utilisant la bibliothèque jquery, vous vous fournissez vous-même, vous n'avez pas à vous soucier des différences entre les familles de navigateurs et les versions
En fournissant vous-même le jquery, vous êtes sûr d'avoir une API cohérente.
Si nous avons le jquery intégré dans le navigateur, vous devez vérifier la version de l'utilisateur, et nous sommes de retour dans le navigateur et "Ce site est mieux visualisé en ..."
Donc, avoir la construction de jquery dans le navigateur n'a pas de sens.
De plus, la mise en cache fonctionne, donc même si l'utilisateur n'a pas déjà votre version jquery, elle ne doit être téléchargée qu'une seule fois.
la source
En fait, je pense que les répondants ici ne comprennent pas que la réponse à la question est que les navigateurs devraient probablement chercher à inclure les bibliothèques les plus utilisées, les polyfills, etc. du côté client.
Comme l'indique la personne qui pose la question, des commentaires conditionnels pourraient être utilisés pour garantir que ceux qui utilisent des navigateurs qui n'incluent pas jquery reçoivent une version appropriée.
Jquery inclut également sa propre prise en charge de la compatibilité descendante via migrate, permettant aux commentaires conditionnels de fournir une prise en charge rétroactive à une personne possédant une version packagée d'une ancienne bibliothèque jquery sans télécharger une toute nouvelle bibliothèque.
L'argument en faveur de leur inclusion dans les navigateurs ne concernerait pas seulement l'expérience utilisateur et les coûts, mais également la planète sur laquelle nous vivons. L'utilisation des données est une énorme contribution à la pollution mondiale, et garantir que le transfert inutile de données soit minimisé pourrait avoir un effet dramatique sur notre empreinte carbone.
Essentiellement pour l'ajout de quelques mégaoctets supplémentaires de code gonflé dans un navigateur intégré - les mêmes données sont transportées inutilement environ des milliards de fois par jour.
Cela aggrave l'expérience utilisateur pour tout le monde sur Internet. Et cela coûte énormément d'argent aux grandes entreprises.
En tant que développeur, vous devez simplement créer les solutions de secours nécessaires comme nous le faisons actuellement pour IE, etc., alors quel est le problème - il devrait probablement être inclus?
la source