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!!!");
}


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow