Node.js
Exportation et importation d'un module dans node.js
Recherche…
Utiliser un module simple dans node.js
Qu'est-ce qu'un module node.js ( lien vers l'article ):
Un module encapsule le code associé dans une seule unité de code. Lors de la création d'un module, cela peut être interprété comme déplaçant toutes les fonctions associées dans un fichier.
Voyons maintenant un exemple. Imaginez que tous les fichiers se trouvent dans le même répertoire:
Fichier: printer.js
"use strict";
exports.printHelloWorld = function (){
console.log("Hello World!!!");
}
Une autre façon d'utiliser les modules:
Fichier animals.js
"use strict";
module.exports = {
lion: function() {
console.log("ROAARR!!!");
}
};
Fichier: app.js
Exécutez ce fichier en accédant à votre répertoire et en tapant: node app.js
"use strict";
//require('./path/to/module.js') node which module to load
var printer = require('./printer');
var animals = require('./animals');
printer.printHelloWorld(); //prints "Hello World!!!"
animals.lion(); //prints "ROAARR!!!"
Utilisation des importations dans ES6
Node.js est construit contre les versions modernes de V8. En se mettant à jour avec les dernières versions de ce moteur, nous nous assurons que les nouvelles fonctionnalités de la spécification JavaScript ECMA-262 sont apportées aux développeurs Node.js en temps opportun, ainsi que des améliorations continues des performances et de la stabilité.
Toutes les fonctionnalités ECMAScript 2015 (ES6) sont divisées en trois groupes pour les fonctions d’expédition, de transfert et de progression:
Toutes les fonctionnalités d’expédition, que V8 considère comme stables, sont activées par défaut sur Node.js et ne nécessitent AUCUN type d’indicateur d’exécution. Les fonctions par étapes, qui sont des fonctions presque terminées qui ne sont pas considérées comme stables par l'équipe V8, nécessitent un indicateur d'exécution: --harmony. Les fonctions en cours peuvent être activées individuellement par leur drapeau d'harmonie respectif, bien que cela soit fortement déconseillé, sauf à des fins de test. Remarque: ces indicateurs sont exposés par V8 et risquent de changer sans préavis.
Actuellement, ES6 prend en charge les instructions d'importation en mode natif .
Donc, si nous avons un fichier appelé fun.js
…
export default function say(what){
console.log(what);
}
export function sayLoud(whoot) {
say(whoot.toUpperCase());
}
… Et s'il y avait un autre fichier nommé app.js
lequel nous souhaitons utiliser nos fonctions précédemment définies, il existe trois manières de les importer.
Importer par défaut
import say from './fun';
say('Hello Stack Overflow!!'); // Output: Hello Stack Overflow!!
Importe la fonction say()
car elle est marquée comme export par défaut dans le fichier source ( export default …
)
Importations nommées
import { sayLoud } from './fun';
sayLoud('JS modules are awesome.'); // Output: JS MODULES ARE AWESOME.
Les importations nommées nous permettent d'importer exactement les parties d'un module dont nous avons réellement besoin. Nous faisons cela en les nommant explicitement. Dans notre cas, en nommant sayLoud
entre accolades dans l'instruction import.
Importation groupée
import * as i from './fun';
i.say('What?'); // Output: What?
i.sayLoud('Whoot!'); // Output: WHOOT!
Si nous voulons tout avoir, c'est la voie à suivre. En utilisant la syntaxe * as i
nous avons un objet import
contenant un objet i
contenant toutes les exportations de notre module fun
comme propriétés correspondantes.
Les chemins
N'oubliez pas que vous devez explicitement marquer vos chemins d'importation en tant que chemins relatifs, même si le fichier à importer réside dans le même répertoire que le fichier dans lequel vous importez en utilisant ./
. Importations à partir de chemins non préfixés comme
import express from 'express';
sera recherché dans les dossiers node_modules
locaux et globaux et node_modules
une erreur si aucun module correspondant n'est trouvé.
Exportation avec la syntaxe ES6
Ceci est l'équivalent de l'autre exemple, mais en utilisant plutôt ES6.
export function printHelloWorld() {
console.log("Hello World!!!");
}