nodejs 8 Module d'importation-require ou importer? [dupliquer]
cette question a déjà une réponse ici:
je me demande comment importer un module dans un noeud.js 8 - utilise-t-on toujours require
?
ou avons-nous encore besoin de babel pour utiliser import
?
j'ai creusé autour mais semble pas de réponse. Si nous devons toujours utiliser require, pourquoi node ne peut pas encore implémenter import
?
1 réponses
mise à jour-2017.11.01 ↓
réponse Courte
Nous utilisons toujours require
longue réponse
Le chargement de L'ESM a atterri partiellement dans le noeud 8.5.0
qui a été libéré en septembre. Voir la documentation API ici . Avertissements comprennent la nécessité de la --experimental-modules
drapeau et l'utilisation d'un nouveau .mjs
extension pour les modules. Vous pouvez jeter un oeil à la discussion complète ici
Il ya encore des changements qui doivent se produire dans V8 avant que le chargement ESM est stable et entièrement présenté de sorte que comme avec ma réponse d'origine, je conseillerais encore de rester avec CommonJS require
si vous ne utilisez pas déjà Babel pour d'autres choses
voir ce post pour une explication plus didactique
PRÉCÉDENTE RÉPONSE ↓
les deux implémentations sont complètement différentes sous le capot, donc il y a plus que ce qui rencontre les yeux
le fait est qu'il y a toujours des problèmes/questions persistants sur les spécifications (jusqu'à V8), et en tant que tel import
ne peut pas actuellement être mis en œuvre dans un noeud sans une utilisation d'un transpileur
Voir ce commentaire (daté Février 2017) d'un des contributeur :
à l'heure actuelle, il y a encore un certain nombre de problèmes de spécification et de mise en œuvre qui doivent se produire du côté ES6 et machine virtuelle des choses avant le nœud.js peut même commencer à élaborer une implémentation supportable des modules ES6. Les travaux sont en cours, mais ils prendront du temps - nous en sommes actuellement à environ un an au moins.
gardez à l'esprit que transpilers convertit simplement la syntaxe du module ES6 à la syntaxe du module CommonJS, de sorte qu'il n'y a actuellement aucun avantage de performance. En d'autres termes, si vous n'avez pas déjà un pipeline Babel, il n'y a pas beaucoup d'incitations à en créer un juste pour utiliser la nouvelle syntaxe proposée import
, sauf d'une perspective syntaxique proactive
pour plus de détails sur la façon dont la mise en œuvre diffère, voir cette écriture