Quant aux questions du test écrit que j'ai rencontrées aujourd'hui, donnez-moi quelques réponses s'il vous plaît
A.js et b.js s'exigent l'un de l'autre, vont-ils tomber dans une boucle infinie ? Les résultats peuvent-ils être exportés ? Comment éviter ce problème?
Il s'agit d'examiner le chargement cyclique des modules JavaScript
Vous pouvez utiliser le mécanisme de module d'es6 pour contourner ce problème. La gestion du "chargement cyclique" par ES6 est fondamentalement différente de celle de CommonJS. ES6 ne se soucie pas du tout de savoir si un "chargement en boucle" se produit, il génère simplement une référence au module chargé. Le développeur doit s'assurer que la valeur peut être obtenue lorsqu'elle est réellement obtenue.
Si vous le comprenez littéralement, utilisez uniquement
Ensuite, ce problème peut être compris comme un problème de référence circulaire dans CommonJS. L'approche de CommonJS est qu'une fois qu'un module est « chargé en boucle », seule la partie exécutée sera sortie, et la partie non exécutée ne sera pas sortie.
Si vous comprenez conceptuellement la référence circulaire entre deux modules, cela implique également la référence de module d'es6.
ES6 ne se soucie pas du tout de savoir si un "chargement en boucle" se produit, il génère simplement une référence au module chargé. Le développeur doit s'assurer que la valeur peut être obtenue lorsque la valeur est réellement obtenue.
Utiliser simplement CommonJs ou simplement utiliser esm (module es6) ne provoquera pas de boucle infinie. Mais cela peut arriver si l’on mélange les deux.
Je recommande le blog de Ruan Yifeng, qui est très bien écrit.
http://www.ruanyifeng.com/blo...