Szukaj…


Korzystanie z prostego modułu w node.js

Co to jest moduł node.js ( link do artykułu ):

Moduł hermetyzuje powiązany kod w pojedynczą jednostkę kodu. Podczas tworzenia modułu można to interpretować jako przeniesienie wszystkich powiązanych funkcji do pliku.

Teraz zobaczmy przykład. Wyobraź sobie, że wszystkie pliki znajdują się w tym samym katalogu:

Plik: printer.js

"use strict";

exports.printHelloWorld = function (){
    console.log("Hello World!!!");
}

Inny sposób korzystania z modułów:

Plik animals.js

"use strict";

module.exports = {
    lion: function() {
        console.log("ROAARR!!!");
    }

};

Plik: app.js

Uruchom ten plik, przechodząc do katalogu i wpisując: 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!!!"

Używanie importów w ES6

Node.js jest zbudowany na nowoczesnych wersjach V8. Dzięki aktualnościom o najnowszych wersjach tego silnika zapewniamy terminowe wprowadzanie nowych funkcji ze specyfikacji JavaScript ECMA-262 do programistów Node.js, a także ciągłą poprawę wydajności i stabilności.

Wszystkie funkcje ECMAScript 2015 (ES6) są podzielone na trzy grupy dla funkcji wysyłkowej, etapowej i w toku:

Wszystkie funkcje wysyłki, które V8 uważa za stabilne, są domyślnie włączone w Node.js i NIE wymagają żadnych flag wykonawczych. Funkcje etapowe, które są prawie ukończonymi funkcjami, które nie są uważane za stabilne przez zespół V8, wymagają flagi czasu działania: - Harmonia. W toku funkcje mogą być aktywowane indywidualnie za pomocą odpowiedniej flagi harmonii, chociaż jest to wysoce odradzane, chyba że do celów testowych. Uwaga: te flagi są widoczne w wersji V8 i potencjalnie mogą ulec zmianie bez powiadomienia o wycofaniu.

Obecnie ES6 obsługuje natywnie instrukcje importowania. Patrz tutaj

Więc jeśli mamy plik o nazwie fun.js

export default function say(what){
  console.log(what);
}

export function sayLoud(whoot) {
  say(whoot.toUpperCase());
}

… A jeśli app.js inny plik o nazwie app.js którym chcemy wykorzystać nasze wcześniej zdefiniowane funkcje, istnieją trzy sposoby ich zaimportowania.

Importuj domyślnie

import say from './fun';
say('Hello Stack Overflow!!');  // Output: Hello Stack Overflow!!

Importuje funkcję say() ponieważ jest oznaczona jako domyślny eksport w pliku źródłowym ( export default … )

Nazwany import

import { sayLoud } from './fun';
sayLoud('JS modules are awesome.'); // Output: JS MODULES ARE AWESOME.

Nazwane importy pozwalają nam importować dokładnie te części modułu, których faktycznie potrzebujemy. Robimy to, nadając im jawne nazwy. W naszym przypadku, nazywając sayLoud w nawiasach klamrowych w instrukcji importu.

Import w pakiecie

import * as i from './fun';
i.say('What?'); // Output: What?
i.sayLoud('Whoot!'); // Output: WHOOT!

Jeśli chcemy mieć wszystko, jest to dobra droga. Korzystając ze składni * as i mamy instrukcję import , dostarczamy obiekt i który przechowuje wszystkie eksporty naszego fun modułu jako odpowiednio nazwane właściwości.

Ścieżki

Pamiętaj, że musisz wyraźnie oznaczyć ścieżki importu jako ścieżki względne, nawet jeśli importowany plik znajduje się w tym samym katalogu, co plik, do którego importujesz za pomocą ./ . Importuje z nieprzedstawionych ścieżek, takich jak

import express from 'express';

zostanie node_modules w lokalnych i globalnych folderach node_modules i zgłosi błąd, jeśli nie zostaną znalezione pasujące moduły.

Eksportowanie ze składnią ES6

Jest to odpowiednik innego przykładu, ale zamiast tego używa ES6.

export function printHelloWorld() {
  console.log("Hello World!!!");
}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow