Node.js
Module exporteren en importeren in node.js
Zoeken…
Een eenvoudige module gebruiken in node.js
Wat is een node.js-module ( link naar artikel ):
Een module omvat gerelateerde code in een enkele code-eenheid. Bij het maken van een module kan dit worden geïnterpreteerd als het verplaatsen van alle gerelateerde functies naar een bestand.
Laten we nu een voorbeeld bekijken. Stel je voor dat alle bestanden in dezelfde map staan:
Bestand: printer.js
"use strict";
exports.printHelloWorld = function (){
console.log("Hello World!!!");
}
Een andere manier om modules te gebruiken:
Bestand animals.js
"use strict";
module.exports = {
lion: function() {
console.log("ROAARR!!!");
}
};
Bestand: app.js
Voer dit bestand uit door naar uw map te gaan en te typen: 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!!!"
Imports gebruiken in ES6
Node.js is gebouwd tegen moderne versies van V8. Door up-to-date te blijven met de nieuwste releases van deze engine, zorgen we ervoor dat nieuwe functies van de JavaScript ECMA-262-specificatie tijdig naar Node.js-ontwikkelaars worden gebracht, evenals voortdurende verbeteringen in prestaties en stabiliteit.
Alle functies van ECMAScript 2015 (ES6) zijn opgesplitst in drie groepen voor verzend-, gefaseerde en actieve functies:
Alle verzendfuncties, die V8 als stabiel beschouwt, zijn standaard ingeschakeld op Node.js en vereisen GEEN enkele runtime-vlag. Gefaseerde functies, die bijna voltooide functies zijn die door het V8-team niet als stabiel worden beschouwd, vereisen een runtime-vlag: --harmony. Functies in uitvoering kunnen afzonderlijk worden geactiveerd door hun respectieve harmonievlag, hoewel dit ten zeerste wordt afgeraden, tenzij voor testdoeleinden. Opmerking: deze vlaggen worden blootgesteld door V8 en kunnen mogelijk veranderen zonder kennisgeving van afschrijving.
Momenteel ES6 ondersteunt import statements native Zie hier
Dus als we een bestand met de naam fun.js
...
export default function say(what){
console.log(what);
}
export function sayLoud(whoot) {
say(whoot.toUpperCase());
}
... en als er een ander bestand met de naam app.js
waar we onze eerder gedefinieerde functies willen gebruiken, zijn er drie manieren om ze te importeren.
Standaard importeren
import say from './fun';
say('Hello Stack Overflow!!'); // Output: Hello Stack Overflow!!
Importeert de functie say()
omdat deze is gemarkeerd als de standaard export in het bronbestand ( export default …
)
Benoemde invoer
import { sayLoud } from './fun';
sayLoud('JS modules are awesome.'); // Output: JS MODULES ARE AWESOME.
Met benoemde importen kunnen we precies de onderdelen van een module importeren die we echt nodig hebben. We doen dit door ze expliciet een naam te geven. In ons geval door sayLoud
noemen tussen accolades binnen de importverklaring.
Gebundelde import
import * as i from './fun';
i.say('What?'); // Output: What?
i.sayLoud('Whoot!'); // Output: WHOOT!
Als we alles willen hebben, is dit de weg te gaan. Door het gebruik van de syntax * as i
hebben we de import
verklaring af te geven ons een object i
dat alle uitvoer van onze houdt fun
module als navenant benoemde eigenschappen.
Paths
Houd er rekening mee dat u uw importpaden expliciet als relatieve paden moet markeren , zelfs als het te importeren bestand zich in dezelfde map bevindt als het bestand waarin u importeert met ./
. Importeert van niet-vooraf gefixeerde paden zoals
import express from 'express';
wordt opgezocht in de lokale en globale mappen node_modules
en geeft een foutmelding als er geen overeenkomende modules worden gevonden.
Exporteren met ES6-syntaxis
Dit is het equivalent van het andere voorbeeld maar gebruikt in plaats daarvan ES6.
export function printHelloWorld() {
console.log("Hello World!!!");
}