Nous avons rencontré un problème intéressant dans un projet existant,Module ordre de chargement dans requirejs
- Nous utilisons requireJS
- Tous nos modules sont conformes AMD (et nous avons beaucoup d'entre eux)
- Nous devons inclure un sous-ensemble de
babel-polyfill
en tant que module AMD au projet. - Il est impossible d'ajouter manuellement cette dépendance à tous les modules un par un
- Notre code est optimisé et empaquetés en utilisant
r.js
Notre fichier principal ressemble à quelque chose comme ceci: // main.js
require(
[
'router',
'someOtherModule', /* In reality we have quite a few more here */
], function(Router, AppModule) {/*... app code ...*/}
)
Donc, nous aimerions charger ce module polyfill
avant que tout autre module ne soit chargé main.js
Ce qui ne fonctionne pas:
- Shim - Shim est utilisé pour les modules non-AMD.
- Ajout du polyfill à la liste ci-dessus
router
- dans le code minified que r.js recrache, il n'y a aucune garantie quepolyfill
sera effectivement dans le code avantrouter
, ce n'est pas le comportement défini et ne peut donc pas compter sur lui. - Envelopper tout avec un autre
require['polyfill']
appel semble bousiller l'optimiseur r.js, il ne semble pas le faisceau ensemble les autres modules s'ils sont enveloppés dansrequire[]
. - Depuis le
polyfill
est un module AMD, nous ne pouvons pas l'inclure dans le<HEAD>
Option 3 est toujours quelque chose que nous enquêtons pour voir s'il est possible.
Donc la question est - est ce que nous essayons de faire possible?