Node.js
Exportera och importera modulen i node.js
Sök…
Med hjälp av en enkel modul i node.js
Vad är en node.js-modul ( länk till artikel ):
En modul inkapslar relaterad kod i en enda kodenhet. När du skapar en modul kan detta tolkas som att flytta alla relaterade funktioner till en fil.
Nu kan vi se ett exempel. Föreställ dig att alla filer finns i samma katalog:
Fil: printer.js
"use strict";
exports.printHelloWorld = function (){
console.log("Hello World!!!");
}
Ett annat sätt att använda moduler:
animals.js
"use strict";
module.exports = {
lion: function() {
console.log("ROAARR!!!");
}
};
Fil: app.js
Kör den här filen genom att gå till din katalog och skriva: 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!!!"
Använda import i ES6
Node.js är byggt mot moderna versioner av V8. Genom att hålla oss uppdaterade med de senaste utgåvorna av denna motor, säkerställer vi att nya funktioner från JavaScript ECMA-262-specifikationen kommer till Node.js-utvecklare i tid, såväl som fortsatta prestanda- och stabilitetsförbättringar.
Alla funktioner i ECMAScript 2015 (ES6) är uppdelade i tre grupper för frakt, iscensatta och pågående funktioner:
Alla leveransfunktioner, som V8 anser som stabila, är som standard aktiverade på Node.js och kräver INTE någon form av runtime-flagga. Iscensatta funktioner, som är nästan avslutade funktioner som inte anses vara stabila av V8-teamet, kräver en runtime-flagga: - harmoni. Pågående funktioner kan aktiveras individuellt av deras respektive harmoniflagga, även om detta är starkt avskräckt om inte för teständamål. Obs: dessa flaggor exponeras av V8 och kommer eventuellt att ändras utan någon avskrivning.
För närvarande stöder ES6 importmeddelanden naturligt. Se här
Så om vi har en fil som heter fun.js
...
export default function say(what){
console.log(what);
}
export function sayLoud(whoot) {
say(whoot.toUpperCase());
}
... och om det fanns en annan fil med namnet app.js
där vi vill använda våra tidigare definierade funktioner att använda, finns det tre sätt att importera dem.
Importera standard
import say from './fun';
say('Hello Stack Overflow!!'); // Output: Hello Stack Overflow!!
Importerar funktionen say()
eftersom den är markerad som standardexport i källfilen ( export default …
)
Namngivna import
import { sayLoud } from './fun';
sayLoud('JS modules are awesome.'); // Output: JS MODULES ARE AWESOME.
Namngivna import tillåter oss att importera exakt de delar av en modul vi faktiskt behöver. Vi gör detta genom att uttryckligen namnge dem. I vårt fall genom att namnge sayLoud
i lockiga parenteser inom importmeddelandet.
Medföljande import
import * as i from './fun';
i.say('What?'); // Output: What?
i.sayLoud('Whoot!'); // Output: WHOOT!
Om vi vill ha allt är detta vägen att gå. Genom att använda syntaxen * as i
har import
förse oss med ett objekt i
som har all export av vår fun
modul som motsvarande namn.
Paths
Kom ihåg att du måste markera dina importvägar uttryckligen som relativa banor även om filen som ska importeras finns i samma katalog som filen du importerar till med ./
. Import från obefixerade banor som
import express from 'express';
kommer att letas upp i de lokala och globala mapparna för node_modules
och kastar ett fel om inga matchande moduler hittas.
Exporterar med ES6-syntax
Detta motsvarar det andra exemplet men istället använder ES6.
export function printHelloWorld() {
console.log("Hello World!!!");
}