• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

NodeJS - czy można stworzyć "główny" moduł?

Object Storage Arubacloud
0 głosów
299 wizyt
pytanie zadane 20 września 2019 w JavaScript przez BlvckFox Gaduła (4,240 p.)

Cześć, czy w nodejs można stworzyć coś takiego jak "główny moduł"?
Mój problem polega na tym, że:
Posiadam dwa pliki: 
[app.js] oraz [commands.js]

app.js:

const modul1 = require(modulZInternetu.js);
const modul2 = require(modulZInternetu2.js);
const modul3 = require(modulZInternetu3.js);
const modul4 = require(modulZInternetu4.js);
const mojModul = require(commands.js);
nasłuchuj: 
if(uzytkownik wykona komende z pliku commands.js){
  zrob to co w commands.js podane
}



commands.js:

const commands = [{
    name: 'help',
    func: (x) => {
       return modulZInternetu3.something;
    }
}];

Problem polega na tym, że plik commands.js nie widzi "modulZInternetu3" i aby go użyć musiałbym znowu używać require. Gdybym posiadał np. 50 własnych modułów a każdy używał jakiegoś modulZInternetu to bym musial do kazdego pliku dodawac require. Czy można to zrobić tak jak o ile się orientuje w PHP include? Gdzie javascript traktuje require nie jako moduł tylko jako kolejną część kodu, tylko porządkowaną w innym pliku?
Oraz: Czy dodawanie w każdym pliku nowego require wpływa na aplikacje? W sensie, czy program wykrywa "Ok, moduł X jest już używany więc w tym module nie pobiore go jeszcze raz"?

1 odpowiedź

+2 głosów
odpowiedź 20 września 2019 przez rafal.budzis Szeryf (85,260 p.)

Require w każdym pliku to bardzo dobre podejście :) Traktuj to jak namespacy w PHP. Też zawsze musisz podać wszystkie :) 

Moduły są cachowane i zwracają zawsze tą samą instancje :) Wystarczy prosty kod aby to sprawdzić :) Zrób sobie nowy plik :

let liczba = 0;
console.log('wykonam się tylko raz!');

module.exports = () => { 
     liczba++; 
     console.log('Liczba ma wartość: ', liczba);
}

zaimportuj go w kilku różnych plikach i wywołaj funkcje :) W pamięci powinna stworzyć sie tylko jedna zmienna i tylko jedna funkcja.

komentarz 21 września 2019 przez BlvckFox Gaduła (4,240 p.)
Zgodnie z zasadą DRY takie rozwiązania jak 'ta sama linijka w kazdym pliku' nie wydawała mi się dobrym rozwiązaniem, więc dziękuję za naprostowanie. A co jeżeli posiadam 50 modułów w każdym z tym modułów np. 6x require i okazuje się, że wychodzi jakaś nowa, lepsza biblioteka czy coś w tym stylu - w takim wypadku będę musiał zmieniać 50 plików, czy to dobre rozwiązanie czy po prostu znajduję problemy tam gdzie ich nie ma?

Podobne pytania

0 głosów
0 odpowiedzi 99 wizyt
pytanie zadane 12 lutego 2019 w JavaScript przez Pietrak Pasjonat (18,850 p.)
+1 głos
0 odpowiedzi 123 wizyt
pytanie zadane 7 września 2019 w JavaScript przez Whereismycode Obywatel (1,710 p.)
0 głosów
2 odpowiedzi 230 wizyt
pytanie zadane 13 maja 2018 w JavaScript przez Konfeusz Bywalec (2,810 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...