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 ?

34
demandé sur laukok 2017-07-08 14:49:08

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

30
répondu kuzyn 2018-02-12 15:21:27