8
votes

Meilleure façon de forger une bibliothèque JavaScript qui nécessite JQuery?

J'écris une bibliothèque JavaScript très basique qui utilise la fonction $ .ajax () de jQuery.

Comment dois-je gérer cette dépendance? Devrais-je instruire les utilisateurs de ma bibliothèque d'inclure JQuery eux-mêmes? Devrais-je utiliser quelque chose comme des exigences ou une insertion d'étiquette de script pour charger jQuery dans la bibliothèque? Si ce dernier serait mieux, comment puis-je faire cela sans causer de conflit si l'utilisateur utilise déjà JQuery?


7 commentaires

J'aurais besoin d'une personne utilisant votre bibliothèque pour inclure JQuery par eux-mêmes. Il est assez courant et il mettra en évidence qu'ils doivent prendre en compte les incompatibilités au sein de leur propre code.


Je suggérerais que votre bibliothèque ait lancé une exception si JQuery n'est pas inclus et une méthode est utilisée qui réside JQUERY. Le regroupement jQuery avec elle peut automatiquement causer des maux de tête beaucoup pires pour des situations où JQuery est déjà incluse que de les inclure eux-mêmes.


Si toute votre bibliothèque a besoin est $. Ajax , puis faites votre propre XMLHTTPQUESTS. Je suis désolé, mais ce serait des noix de demander à JQuery juste pour XHR.


Pensez à utiliser un CDN pour charger jQuery si JQuery n'est pas déjà chargé


@sillylittleme Quel serait l'inconvénient de répondre à la totalité de JQuery? De ce que je comprends, la plupart des utilisateurs finaux ont déjà une cache de JQuery de toute façon. Y a-t-il d'autres éléments de la performance que je dois penser?


@ Challingplates: trop de téléchargement juste. Les utilisateurs de JQuery aiment faire le tour de ce que tout le monde a déjà «a» jQuery, mais ce n'est pas aussi simple. Le cache d'un navigateur pourrait avoir jQuery, mais si c'est le cas, la question est la version? et de quel cdn? Il y a des dizaines de versions de jQuery hébergé par au moins 3 CDN majeurs. Le cache du navigateur est fini. Au mieux, c'est frappé ou manquant. XHR est une très petite partie. Si vous ne voulez pas le faire vous-même, je vous suggère de trouver une bibliothèque qui fait que XHR ou qui est au moins modulaire, vous pouvez donc charger uniquement la ou les pièces dont vous avez besoin.


... L'utilisation idéale de JQuery avec ExigenceJS est de le charger comme module , puisque il enregistre comme module AMD. Je suis d'accord avec @sillylittleme sur JQuery étant surkill pour vos besoins, mais si vous l'utilisez, jetez un coup d'œil à ce lien qui est un projet de démonstration de la Auteur d'EXQUATEJS (en utilisant une concaténation des deux bibliothèques dans requiert-jquery.js ).


3 Réponses :


0
votes

Je vous recommanderais de conseiller les utilisateurs à inclure d'abord JQuery. Si vous me laissez choisir un exemple, vous verrez qu'il s'agit d'une approche vraiment utilisée (p. Ex. Framework)


0 commentaires

2
votes

Je pense que cela dépend un peu si vous avez plus de dépendances, autres que JQuery.

Si JQuery est votre seule dépendance, et votre bibliothèque n'a pas vraiment besoin de son propre système de dépendance du module, je ne recommanderais pas d'exigerjs. Vérifiez simplement l'existence de JQuery dans votre bibliothèque et lancez une erreur sinon.

Si vous cherchez cependant à faire une liberge flexible et maintenante, je vous recommanderais d'utiliser un chargeur de module (comme EXEMPERJS). Cela vous donne également l'avantage d'utiliser un Build System qui vous permet de combiner et d'emballer votre bibliothèque < / p>


0 commentaires

1
votes

J'ai fini par écrire ma propre fonction pour chercher des données JSON comme stupide petit moi recommandé dans le poste d'origine. Merci à tous ceux qui ont répondu. Les directives sur les dépendances de la bibliothèque JavaScript ont été très utiles, même si je suis descendu cet autre itinéraire.

J'ai utilisé Ce débordement de pile répond à la réponse comme guide pour écrire ma propre fonction pour chercher JSON. Je devais récupérer les données de manière synchrone, donc j'ai ajusté la fonction avec les conseils décrits dans Cet autre article .

à la fin, ma fonction ressemblait à ceci. J'espère que cela aide quelqu'un d'autre qui vient. xxx


3 commentaires

N'oubliez pas que cela ne fonctionnera pas chez les plus âgés, c'est-à-dire si vous en avez besoin aussi.


Merci pour les commentaires, @blockhead. Quelle partie casse la compatibilité? L'appel JSON.PARSE?


Il suffit de voir que ma dernière question est répondu à La réponse i référence ci-dessus.