NodeJS prévoit de soutenir les modules import/export es6 (es2015)

j'ai cherché partout sur internet sans réponse claire.

actuellement NodeJS utilise uniquement la syntaxe CommonJS pour charger les modules, et si vous voulez vraiment utiliser la syntaxe standard des modules ES2015, vous devez soit le transpiler à l'avance ou utiliser un chargeur de module externe à l'exécution.

actuellement, Je ne suis pas trop positif pour utiliser l'une ou l'autre de ces deux méthodes, sont les responsables de NodeJS même la planification de soutenir les modules ES2015 ou pas? Je n'ai pas trouvé d'allusion à ce sujet.

Au moment de NodeJS 6.x prétend supporter 96% des fonctionnalités de ES2015, mais il n'y a aucune référence aux modules ( NodeJS ES2105 support link ).

savez-vous si NodeJS va prendre en charge ces modules dans un avenir proche?

243
demandé sur Bergi 2016-05-10 10:34:21

1 réponses

Mise À Jour Le 13 Septembre 2017

NodeJS 8.5.0 a été publié avec le soutien pour les fichiers mjs derrière un drapeau:

node --experimental-modules index.mjs

le plan pour ceci est d'enlever le drapeau pour le v10.Libération de 0 LTS.

Mise À Jour Le 8 Septembre 2017

NodeJS branche master a été mis à jour avec le support initial pour MES modules:

https://github.com/nodejs/node/commit/c8a389e19f172edbada83f59944cad7cc802d9d5

cela devrait être disponible dans la dernière nuit (cela peut être installé via nvm pour fonctionner à côté de votre installation existante):

https://nodejs.org/download/nightly /

et activé derrière le drapeau --experimental-modules :

paquet.json

{
  "name": "testing-mjs",
  "version": "1.0.0",
  "description": "",
  "main": "index.mjs" <-- Set this to be an mjs file
}

puis exécuter:

node --experimental-modules .

-- Information Périmée.

"

Mise À Jour Février 2017:

https://medium.com/@jasnell/an-update-on-es6-modules-in-node-js-42c958b890c#.6ye7mtn37

le NodeJS guys ont décidé que la solution le moins mauvais est d'utiliser l'extension de fichier .mjs . L'extrait de ceci est:

en d'autres termes, compte tenu de deux fichiers foo.js et bar.mjs , en utilisant import * from 'foo' traitera foo.js comme Communjs tandis que import * from 'bar' traitera bar.mjs comme un Module ES6

et quant aux délais...

Au stade actuel, il existe toujours un certain nombre de questions de spécification et de mise en œuvre qui doivent se poser sur le ES6 et côté Machine virtuelle des choses avant le noeud.js peut même commencer élaboration d'une mise en œuvre soutenable des modules ES6. Le travail est en progrès mais cela va prendre du temps - nous cherchons actuellement à environ un an au moins .

Mise À Jour Octobre 2016:

un des développeurs sur Node.JS a récemment assisté à une réunion du TC-39 et a rédigé un superbe article sur les bloqueurs à mettre en œuvre pour Node.JS:

https://hackernoon.com/node-js-tc-39-and-modules-a1118aecf95e

La base de ce qui est:

  • "
  • les modules permettent les exportations de patches de singe, les Modules ES ne font pas actuellement
  • il est difficile de détecter ce qui est un Module ES et ce qui est CommonJS sans une certaine forme d'entrée utilisateur, mais ils essaient.
  • *.mjs semble la solution la plus probable, à moins qu'ils ne puissent détecter avec précision un Module ES sans l'intervention de l'utilisateur

-- Réponse Originale --

cela a été un une patate chaude pendant un bon moment. En fin de Compte, Oui, Node va éventuellement prendre en charge la syntaxe ES2015 pour l'importation/exportation de modules - très probablement lorsque la spécification pour le chargement des modules sera finalisée et convenue.

Ici est un bon aperçu de ce qu'est maintenant NodeJS. Essentiellement, ils doivent s'assurer que le nouveau spec fonctionne pour le noeud qui est principalement conditionnel, chargement synchrone et aussi HTML qui est essentiellement asynchrone.

personne n'en est sûr pour le moment, mais J'imagine que Node supportera import/export pour le chargement statique, en plus du nouveau System.import pour le chargement dynamique - tout en gardant require pour le code d'héritage.

voici quelques propositions sur la façon dont Node pourrait réaliser ceci:

270
répondu CodingIntrigue 2017-09-13 07:14:28