2 votes

Pourquoi le nom du module d'importation est-il si variable ?

Je suis en train de lire sur le nouveau javascript import et pour le nom du module il est dit ceci (c'est moi qui souligne) :

module-name : Le module à importer. Il s'agit de souvent un nom de chemin relatif ou absolu vers le fichier .js contenant le module, sans l'extension .js. Certains regroupeurs peut autoriser ou exiger l'utilisation de l'extension ; vérifiez votre environnement.

Pourquoi y a-t-il autant de variabilité dans ce domaine ? Est-ce que le langage fournit cette fonctionnalité ou est-ce qu'il délègue à des bibliothèques tierces le soin de le faire pour vous ? J'en déduis que c'est la dernière solution.

Pourquoi cela ne provoque-t-il pas une multitude de problèmes ? Par exemple, j'importe une bibliothèque qui utilise le bundler x. Elle utilise des extensions en interne. Mais mon code utilise le bundler y. Il n'utilise pas les extensions. Si j'essaie d'utiliser cette bibliothèque, le code ne va-t-il pas se casser ?

Ça ne doit pas être aussi grave que je le pense. Quelqu'un peut-il m'expliquer comment tout cela fonctionne en fin de compte ? Comment se fait-il que je ne doive pas modifier mon bundler pour la bibliothèque que je veux utiliser ?

1voto

Sidney Points 2203

J'importe une bibliothèque qui utilise bundler x. Elle utilise en interne les extensions. Mais mon code utilise le bundler y. Il n'utilise pas les extensions. Si j'essaie d'utiliser cette bibliothèque, le code ne sera-t-il pas cassé ?

Les fichiers ont besoin d'extensions, ce qui est universel pour tous les bundlers.

Mais je comprends votre point de vue. Il existe de nombreux regroupeurs de code, et plusieurs spécifications (commonJS, UMD, etc.). Elles peuvent ne pas être compatibles, mais en général, les bundlers essaient de prendre en charge le plus de choses possibles.

Il existe désormais une spécification ecmascript officielle, qui devrait être mise en œuvre par les navigateurs, de sorte que (théoriquement) un bundler ne sera plus nécessaire à l'avenir.

La spécification du module a été créée il y a quelques ( ?) années, mais seuls quelques navigateurs la prennent en charge : https://caniuse.com/#feat=es6-module . Pour le meilleur ou pour le pire, je m'attends à ce que les bundlers existent encore pendant plusieurs années au moins, pour contourner les problèmes de mise en œuvre que les navigateurs peuvent rencontrer, pour la transposition du langage, la réduction du code et (bien sûr) la compatibilité ascendante pour les anciens navigateurs.

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