74 votes

Quand utiliser Requirejs et quand utiliser du javascript intégré?

Cela peut être une question stupide pour le web, les gars. Mais je suis un peu confus sur ce. Maintenant, j'ai une application dans laquelle je suis à l'aide d'un couple de fichiers Javascript pour effectuer des tâches différentes. Maintenant, je suis à l'aide de Javascript bundler à combiner et à rapetisser tous les fichiers. Ainsi, au moment de l'exécution, il y aura un seul app.min.js fichier. 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à toutes les choses dans un fichier, puis de le faire j'ai besoin de requirejs? Ou qu'est ce qu'un scénario de cas d'utilisation où je peux utiliser requirejs et/ou bundler?

S'il vous plaît laissez-moi savoir si des précisions sont nécessaires.

48voto

Matt Greer Points 29401

En règle générale, vous utilisez uniquement RequireJS dans son chargement de forme au cours du développement. Une fois que le site est terminé et prêt pour le déploiement, vous minifier le code. L'avantage ici est RequireJS sait exactement ce que vos dépendances, et peut donc facilement minifier le code dans le bon ordre. Voici ce qu'il dit sur la RequireJS site web:

Une fois que vous avez fini de faire du développement et que vous souhaitez déployer votre code de vos utilisateurs, vous pouvez utiliser l'optimiseur de combiner les fichiers JavaScript ensemble et rapetisser. Dans l'exemple ci-dessus, il peut combiner main.js et helper/util.js dans un fichier et de rapetisser le résultat.

28voto

BishopZ Points 2112

C'est une question extrêmement controversée parmi de nombreux maîtriser les développeurs javascript. De nombreuses autres langues ont une "compilation" de la phase où l'ensemble du programme est livré en place pour le déploiement (JBoss .La GUERRE des fichiers viennent à l'esprit). Les programmeurs qui viennent de plus traditionnel de milieux souvent favorables à cette approche.

Javascript a connu une telle croissance au cours des dernières années qu'il est difficile de tableau exact des meilleures pratiques, mais ceux qui apprécient la nature plus fonctionnelle de Javascript préfèrent souvent le module de chargement approche (comme require.js utilise).

J'ai écrit Frame.js qui fonctionne un peu comme require.js alors mon biais est vers le module de chargeur d'approche.

Pour répondre directement à votre question, oui, c'est l'un ou l'autre.

La plupart de celles qui militent pour l'emballage de vos scripts en un seul fichier croire cela permet à plus de compression et est donc plus efficace. Je crois que les avantages d'efficacité de l'emballage sont négligeables dans la plupart des cas, parce que: (1) module de temps de chargement sont répartis sur l'ensemble de la session, (2) les modules individuels peuvent être compressés à peu près le même pourcentage, (3) les modules individuels peuvent être mis en cache par le serveur et les routeurs séparément, et (4) des scripts de chargement seulement quand elles sont nécessaires, en fin de compte vous permet de charger moins de code pour certains utilisateurs et plus de code dans l'ensemble.

Dans le long terme, si vous pouvez voir un avantage à la dynamique de script de chargement de l'utiliser. Si pas, paquet de vos scripts en un seul fichier.

11voto

Harry Points 5121

Il dépend de votre application. Si vous êtes à la fabrication d'un côté serveur d'application avec très peu de javascript (moins de 100 ko minifiés), puis aller pour une totale subordination, vous êtes probablement va être bien.

Mais si vous réalisez une application javascript et avoir une tonne de code, puis à vos besoins vont être différents.

Par exemple, dans mon application, j'ai le bundle de tous les fichiers de base. Il y a jQuery, le trait de soulignement, de la colonne vertébrale, mon principal des fichiers d'application, ma connexion de l'utilisateur du système, mon système de mise en page, mes notifications et le système de chat, tous font partie de mon gros fichier initial.

Mais j'ai beaucoup d'autres modules qui ne fait pas partie de la première liasse, qui sont chargés après ceux-ci.

Les forums, le wiki, le wysiwyg, sélecteur de couleur, faites-le glisser/déposer, de calendrier, et certains des fichiers d'animation font partie de la deuxième catégorie. Vous avez besoin pour prendre des décisions éclairées au sujet de ce qui est couramment utilisé et nécessaire immédiatement vs ce qui peut être retardée.

Si je comprend tout, tout de suite je peux obtenir au-dessus d'un meg de javascript, ce qui serait fou, et effectuer le démarrage initial exagérément lente.

La deuxième catégorie commence à télécharger après l' initSuccess événement se déclenche à partir du fichier initial.

Mais la deuxième catégorie est plus intelligent que la première en ce qu'il charge ce qui est plus important en premier. Par exemple, si vous êtes à la recherche sur le wiki, il va charger le wiki avant qu'il charge le sélecteur de couleurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X