Maison  >  Article  >  interface Web  >  Le module es peut-il être exécuté dans node ?

Le module es peut-il être exécuté dans node ?

WBOY
WBOYoriginal
2022-07-04 17:08:211678parcourir

Le module

es peut être exécuté dans node ; node prend en charge le module es natif depuis la version 8.5.2. Cette fonction peut être activée via l'option de ligne de commande. Le module es, également connu sous le nom de module ECMAScript, est un code JavaScript. mécanisme de réutilisation, mais il ne peut pas être utilisé dans require() est utilisé dans le module es.

Le module es peut-il être exécuté dans node ?

L'environnement d'exploitation de cet article : système Windows 10, nodejs version 12.19.0, ordinateur Dell G3.

Les modules peuvent être exécutés dans node

À partir de la version 8.5.0, Node.js commence à prendre en charge les modules ES natifs, et cette fonctionnalité peut être activée via les options de ligne de commande. Les nouvelles fonctionnalités sont en grande partie dues à Bradley Farias.

1. Démo

La structure du répertoire de code de cet exemple est la suivante :

esm-demo/
 lib.mjs
 main.mjs

lib.mjs :

export function add(x, y) {
 return x + y;
}

main.mjs :

import {add} from './lib.mjs';
console.log('Result: '+add(2, 3));

Exécutez la démo :

$ node --experimental-modules main.mjs
Result: 5

2.

Module ES :

·Vous ne pouvez pas importer de modules dynamiquement. Cependant, les travaux sur Dynamic import() sont en cours et un support devrait être bientôt disponible.

·Aucune variable méta comme __dirname et __filename. Cependant, il existe une proposition pour une fonction similaire : "import.meta". Cela pourrait ressembler à ceci :

console.log(import.meta.url);

·Maintenant, tous les identifiants de module sont des URL (cette partie est nouvelle dans Node.js) :

·Fichier - avec fichier Chemin relatif vers l'extension : ../util/tools.mjs

· Bibliothèque - pas d'extension de fichier et pas de chemin lodash

· Comment mieux rendre les bibliothèques npm également disponibles dans les navigateurs (sans utiliser de bundler) encore Cela reste à voir. Une possibilité consiste à introduire des données de configuration de style RequireJS qui mappent les chemins aux chemins réels. Actuellement, il est illégal d’utiliser des identifiants de module à chemin nu dans les navigateurs.

Interopérabilité avec les modules CJS

Vous pouvez importer des modules CJS, mais ils n'ont toujours que les exportations par défaut - c'est-à-dire la valeur de module.exports. La prise en charge des modules CJS par les exportations nommées est déjà en cours, mais cela peut prendre un certain temps. Si vous pouvez aider, vous pouvez le faire.

import fs1 from 'fs';
console.log(Object.keys(fs1).length); // 86
import * as fs2 from 'fs';
console.log(Object.keys(fs2)); // ['default']

· Impossible d'utiliser require() dans les modules ES. Les principales raisons sont :

· La résolution de chemin fonctionne légèrement différemment : ESM ne prend pas en charge NODE_PATH et require.extensions. De plus, le fait que son identifiant soit toujours une URL entraîne quelques légères différences.

· Les modules ES sont toujours chargés de manière asynchrone, ce qui garantit une compatibilité maximale avec le Web. Ce style de chargement ne peut pas être mélangé avec le chargement synchrone des modules CJS via require().

· La désactivation du chargement synchrone des modules laisse également un chemin de repli pour les importations en attente de niveau supérieur des modules ES (une fonctionnalité actuellement à l'étude).

Apprentissage recommandé : "

Tutoriel vidéo Nodejs"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Que signifie nodelist ?Article suivant:Que signifie nodelist ?