Cela peut être une question stupide pour les gars du Web. Mais je suis un peu confus à ce sujet. Maintenant, j'ai une application où j'utilise quelques fichiers Javascript pour effectuer différentes tâches. Maintenant, j'utilise Javascript bundler pour combiner et réduire tous les fichiers. Ainsi, lors de l'exécution, il n'y aura qu'un seul fichier app.min.js. Maintenant, Requirejs est utilisé pour charger des modules ou des fichiers lors de l'exécution. Donc, la question est de savoir si j'ai déjà tout dans un seul fichier, alors ai-je besoin de requirejs? Ou quel est un scénario de cas d'utilisation où je peux utiliser requirejs et/ou bundler?
Veuillez me faire savoir si d'autres détails sont nécessaires.
Il s'agit d'un problème très controversé parmi de nombreux développeurs javascript compétents. De nombreuses autres langues ont une phase de "compilation" où l'ensemble du programme est regroupé pour le déploiement (les fichiers .WAR de JBoss me viennent à l'esprit). Les programmeurs issus de milieux plus traditionnels privilégient souvent cette approche.
Javascript a connu une telle croissance ces dernières années qu'il est difficile de tracer les meilleures pratiques exactes, mais ceux qui apprécient la nature plus fonctionnelle de Javascript préfèrent souvent l'approche de chargement de module (comme les utilisations require.js).
J'ai écrit Frame.js qui fonctionne un peu comme require.js, donc mon parti pris est l'approche du chargeur de module.
Pour répondre directement à votre question, oui, c'est l'un ou l'autre.
La plupart de ceux qui plaident pour le regroupement de vos scripts dans un seul fichier croient qu'il permet une compression plus importante et est donc plus efficace. Je crois que les avantages d'efficacité de l'emballage sont négligeables dans la plupart des cas car: (1) les temps de chargement des modules sont répartis sur toute la session, (2) les modules individuels peuvent être compressés à presque le même pourcentage, (3) les modules individuels peuvent être mis en cache par le serveur et les routeurs séparément, et (4) le chargement de scripts uniquement lorsqu'ils sont nécessaires vous permet en fin de compte de charger moins de code pour certains utilisateurs et plus de code dans l'ensemble.
À long terme, si vous pouvez voir un avantage au chargement de script dynamique, utilisez-le. Sinon, regroupez vos scripts dans un seul fichier.
En règle générale, vous utilisez uniquement RequireJS dans sa forme de chargement pendant le développement. Une fois le site terminé et prêt pour le déploiement, vous réduisez le code. L'avantage ici est que RequireJS sait exactement quelles sont vos dépendances et peut donc facilement minimiser le code dans le bon ordre. Voici ce qu'il dit sur le site Web RequireJS :
Une fois que vous avez terminé le développement et que vous souhaitez déployer votre code pour vos utilisateurs finaux, vous pouvez utiliser l'optimiseur pour combiner les fichiers JavaScript et les réduire. Dans l'exemple ci-dessus, il peut combiner main.js et helper/util.js en un seul fichier et réduire le résultat.
Cela dépend de votre application. Si vous créez une application côté serveur avec seulement un modeste javascript (moins de 100 ko minifiés), optez pour un regroupement total, tout ira probablement bien.
Mais si vous créez une application javascript et que vous avez une tonne de code, vos besoins seront différents.
Par exemple, dans mon application, je regroupe tous les fichiers de base. Il y a jQuery, underscore, backbone, mes principaux fichiers d'application, mon système de connexion utilisateur, mon système de mise en page, mes notifications et mon système de chat, tous font partie de mon gros fichier initial.
Mais j'ai aussi beaucoup d'autres modules qui ne font pas partie du bundle initial, qui sont chargés après ceux-ci.
Les forums, le wiki, le wysiwyg, le sélecteur de couleurs, le glisser/déposer, le calendrier et certains fichiers d'animation font partie de la deuxième catégorie. Vous devez prendre des décisions raisonnables sur ce qui est couramment utilisé et nécessaire immédiatement par rapport à ce qui peut être retardé.
Si j'inclus tout immédiatement, je peux dépasser une méga de javascript, ce qui serait fou et rendrait le démarrage initial trop lent.
La deuxième catégorie commence le téléchargement après le déclenchement de l'événement initSuccess
à partir du fichier initial.
Mais la deuxième catégorie est plus intelligente que la première en ce sens qu'elle charge ce qui est le plus important en premier. Par exemple, si vous regardez le wiki, il chargera le wiki avant de charger le sélecteur de couleurs.