J'ai plusieurs pages sur un site utilisant RequireJS, et la plupart des pages ont une fonctionnalité unique. Toutes ces pages partagent un grand nombre de modules communs (jQuery, Backbone, etc.) ; toutes ont également leurs propres modules uniques. Je me demande quelle est la meilleure façon d'optimiser ce code à l'aide de r.js . Je vois un certain nombre d'alternatives suggérées par différentes parties de la documentation et des exemples de RequireJS et d'Almond - donc j'ai dressé la liste suivante des possibilités que je vois, et je demande laquelle est la plus recommandée (ou s'il y a une autre meilleure façon) :
- Optimiser un seul fichier JS pour l'ensemble du site en utilisant Amande qui se chargerait une fois et resterait ensuite en cache. L'inconvénient de cette approche très simple est que je chargerais sur chaque page du code dont l'utilisateur n'a pas besoin pour cette page (c'est-à-dire des modules spécifiques à d'autres pages). Pour chaque page, le JS chargé serait plus important qu'il ne l'est en réalité. besoins pour être.
- Optimiser un seul fichier JS pour chaque page qui comprendrait à la fois le module commun et le module spécifique à la page. De cette façon, je pourrais inclure Almond dans le fichier de chaque page et je ne chargerais qu'un seul fichier JS sur chaque page -- ce qui serait significativement plus petit qu'un seul fichier JS pour l'ensemble du site. L'inconvénient que je vois, cependant, est que les modules communs ne seraient pas mis en cache dans le navigateur, n'est-ce pas ? Pour chaque page où l'utilisateur se rend, il devra retélécharger la majeure partie de jQuery, Backbone, etc. (les modules communs), car ces bibliothèques constitueraient une grande partie de chaque fichier JS unique d'une page. (Cela semble être l'approche de la Exemple de page multiple RequireJS sauf que l'exemple n'utilise pas d'amande).
-
Optimiser un fichier JS pour les modules communs, puis un autre pour chaque page spécifique . De cette façon, l'utilisateur mettrait en cache le fichier des modules communs et, en naviguant entre les pages, ne devrait charger qu'un petit fichier JS spécifique à la page. Dans cette option, je vois deux façons de la terminer, pour inclure la fonctionnalité RequireJS : a. Charger le fichier require.js avant les modules communs sur toutes les pages, en utilisant l'attribut
data-main
ou une syntaxe normale<script>
tag -- pas du tout d'amande. Cela signifie que chaque page aurait trois fichiers JS : require.js, modules communs, et modules spécifiques à la page. b. Il semble que cette phrase suggère une méthode pour brancher Almond dans chaque fichier optimisé ---- de sorte que je n'aurais pas à charger require.js, mais plutôt à inclure Almond dans mes modules communs ET mes modules spécifiques à la page. Est-ce que c'est correct ? Est-ce plus efficace que de charger require.js en premier ?
Merci pour tout conseil que vous pourrez me donner sur la meilleure façon de procéder.