JQuery et des outils similaires pourraient-ils être intégrés à l'installation du navigateur?

19

Après avoir lu une autre question sur JQuery et les CDN, est-il possible que des outils comme JQuery "viennent avec" le navigateur, réduisant / éliminant ainsi la nécessité du premier téléchargement à partir d'un CDN ou de votre propre serveur hôte.

Les fichiers JQuery en particulier sont assez petits, vous pouvez donc facilement avoir un certain nombre (toutes?) Des différentes versions dans le cadre d'une installation de navigateur. Maintenant assez juste, cela augmenterait l'empreinte d'installation, le temps de téléchargement pour le navigateur lui-même.

Ensuite, les sites pourraient d'abord vérifier «local», avant CDN (qui met ensuite en cache), avant de finalement se transférer par défaut à partir du serveur du site Web lui-même.

Si cela est faisable, a-t-il été fait et sinon, pourquoi ne l'a-t-il pas été?

ozz
la source
3
Lorsqu'une fonction JavaScript particulière devient si omniprésente qu'elle est considérée comme nécessaire partout, elle est ajoutée au langage. Array.prototype.forEach, Array.prototype.indexOf, Object.createSont tous des exemples de code qui a obtenu dans le moteur empaquetés JavaScript lui - même.
zzzzBov
Je suis sûr que Chrome proposera une solution qui offre à l'utilisateur final la possibilité d'installer une extension avec la possibilité de mettre en cache les fichiers jQuery / javascript nécessaires lors du premier rendu d'un site? Si l'utilisateur refuse, il force la demande comme d'habitude. L'option "ne plus me demander" pourrait désactiver cette option. Il pourrait y avoir une zone dans les paramètres où l'utilisateur final peut sélectionner les fichiers js à stocker dans le cache du navigateur à l'aide d'une simple liste de cases à cocher. Il y aura toujours des js personnalisés envoyés au client, mais il semble que l'élimination des fichiers js envoyés au client par demande optimiserait p
yardpenalty le
1
Quelle version suggéreriez-vous qu'ils incluent? Et la semaine prochaine?
pdr
@pdr - vieille question, avec beaucoup de réponses négatives pour cela. MAIS vous pouvez facilement regrouper la dernière version avec la version du navigateur et permettre au code utilisateur de revenir à la demande d'une version plus récente de CDN si nécessaire. Avec des changements de rupture comme JQuery 2.0, vous pourriez avoir les deux et permettre au code de choisir. Tout un point muet mais vraiment :)
ozz

Réponses:

15

Il n'y a aucune raison technologique pour laquelle ils ne pourraient pas. Cependant, ce n'est pas nécessaire et c'est contraire à la philosophie fondamentale du Web. Ce n'est pas nécessaire, car vous pouvez obtenir presque la même chose avec un en-tête expirant dans un avenir lointain. C'est contraire à la philosophie du Web, car il y a une autorité centralisée descendante sur laquelle les bibliothèques devraient / ne devraient pas être regroupées avec le navigateur.

Edit: les bibliothèques JS sont là, principalement, pour faciliter le traitement du DOM. Je ne pense pas que le regroupement de bibliothèques tierces avec le navigateur soit la bonne façon de rendre l'API DOM plus agréable.

dan_waterworth
la source
1
merci Dan - des liens que je peux lire sur ce que vous décrivez?
ozz
1
Je dirais que le fait de devoir télécharger des mégaoctets sur des mégaoctets de bibliothèques communes chaque fois que je demande une page va à l'encontre d'une autre philosophie Web fondamentale qui consiste à garder les pages Web petites et accessibles. Après tout, beaucoup de gens utilisent encore des modems et des connexions satellite lentes.
maple_shaft
4
Une opération du canal radiculaire rendrait l'API DOM plus agréable ...
Donal Fellows
1
@maple_shaft, c'est un argument quelque peu spécieux. La distribution jQuery minifiée est de 31K. Bien qu'il soit certain qu'il existe des pages Web qui chargent un nombre fou de bibliothèques différentes, la question est spécifique à jQuery, et il n'y a pas de comptabilité pour les programmeurs de merde.
Adam Crossland
16

En fait, ce que vous décrivez existe déjà depuis des années. Cela s'appelle la mise en cache . Et il est disponible non seulement pour JQuery, mais pour tout ce que votre navigateur peut télécharger.

Ensuite, les sites pourraient d'abord vérifier «local», avant CDN, avant de finalement se transférer par défaut à partir du serveur du site Web lui-même.

C'est exactement ce que fait chaque navigateur. Il vérifie d'abord le cache local, puis en télécharge un à partir du CDN si nécessaire. Avec une configuration de cache appropriée, il n'y a même pas de trajet aller-retour vers le serveur (pour vérifier la version la plus récente) pendant des mois.

Inclure JQuery dans la configuration du navigateur:

  • Ajoutez une complexité inutile à l'application et à la configuration du navigateur,

  • Ajoutez une complexité inutile au processus de mise à jour,

  • Augmentez le nombre de mises à jour afin de garder la version à jour de JQuery, même pour les personnes qui n'en ont pas besoin,

  • Ajouter la confusion: pourquoi JQuery et non Prototype, ou un autre framework, image, fichier CSS, etc.?

  • etc.

Augmenter la complexité d'un produit logiciel sans aucun avantage en termes de fonctionnalités, de performances, etc. est une très mauvaise idée.

Arseni Mourzenko
la source
Merci. Ouais, je n'étais pas clair dans ma question. Je sais bien que c'est ce qui se passe. Je parle d'éliminer la nécessité même du premier téléchargement. Je mettrai à jour la question.
ozz
merci pour toutes vos raisons de NE PAS inclure dans la configuration du navigateur :-)
ozz
6
Vous ne pouvez pas éliminer le besoin du premier téléchargement. Si JQuery est inclus dans la configuration, il est téléchargé pour la première fois lorsque la personne télécharge l'exécutable de configuration (puis il est à nouveau téléchargé via des mises à jour lorsqu'une nouvelle version de JQuery est publiée).
Arseni Mourzenko
2
Il n'élimine pas la perte de performances, mais la fait passer de la visite du premier site Web au téléchargement de l'exécutable d'installation, ce qui signifie que globalement, c'est l'opposé d'une sauvegarde des performances. Cela n'élimine pas non plus le besoin de CDN si vous souhaitez prendre en charge des navigateurs plus anciens et des navigateurs non mis à jour depuis la sortie de la dernière version de JQuery.
Arseni Mourzenko
1
@All Si vous souhaitez en discuter plus en détail, veuillez en discuter.
maple_shaft
5

N'oubliez pas que jQuery est une bibliothèque js, elle semble être devenue de facto et considérée comme une panacée (au point de devenir mémorable sur SO), mais ce n'est qu'une bibliothèque js.

Tout ce qui est standardisé pour les scripts (EMCAScript) est déjà inclus dans le navigateur, tout autre élément ajouté à d'autres navigateurs deviendrait non standard et vous vous retrouveriez avec les problèmes de cross-browser pour les navigateurs non standard (comme le modèle d'événement IE ) qui influencent en partie la raison pour laquelle des bibliothèques comme jQuery ont été créées en premier lieu.

Réponse courte: ils pourraient être inclus, mais ils ne devraient pas.

StuperUser
la source
5

La mise en cache du navigateur fournit quelque chose de très similaire à ce dont vous parlez. Il devrait être le cas que jQuery ou toute autre bibliothèque JS soit téléchargée une fois puis récupérée à partir du cache sur d'autres demandes.

Bien que jQuery soit la bibliothèque JavaScript la plus omniprésente, elle n'est pas la seule et il me semble que d'en faire un composant installé du navigateur serait mauvais pour l'écosystème JS. La concurrence est saine et mène généralement à l'innovation, et nous, développeurs et utilisateurs de logiciels, ne serions pas bien servis en donnant à jQuery une position spéciale.

Une fois que vous prenez en compte la mise en cache, l'avantage que vous gagnez est très, très minime. La version minifiée de jQuery n'est que de 31 Ko. Ce n'est pas une raison pour changer quoi que ce soit .

Adam Crossland
la source
merci Adam - oui, je connais le premier téléchargement, scénario de cache. Je pense aussi remplacer cela. JQuery n'était qu'un exemple, mais je suis d'accord avec vos réflexions sur la concurrence, cela semble être la principale raison pour laquelle ce que je suggère ne se produit pas. Vous auriez alors différents navigateurs ayant différents ensembles de composants "par défaut", etc.
ozz
J'ai mis à jour la question pour mentionner que je suis au courant de la mise en cache :-)
ozz