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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow