Czym więc jest to „wymaganie”?
require() nie jest częścią standardowego interfejsu API JavaScript. Ale w Node.js jest to wbudowana funkcja o specjalnym przeznaczeniu:ładowaniu modułów.
Moduły to sposób na podzielenie aplikacji na osobne pliki zamiast umieszczania całej aplikacji w jednym pliku. Ta koncepcja jest również obecna w innych językach z niewielkimi różnicami w składni i zachowaniu, takich jak include w C , import Pythona i tak dalej.
Jedną dużą różnicą między modułami Node.js a JavaScriptem przeglądarki jest sposób, w jaki kod jednego skryptu jest uzyskiwany z kodu innego skryptu.
-
W przeglądarce JavaScript skrypty są dodawane za pomocą
<script>element. Kiedy są wykonywane, wszyscy mają bezpośredni dostęp do zakresu globalnego, „wspólnej przestrzeni” między wszystkimi skryptami. Każdy skrypt może dowolnie definiować/modyfikować/usuwać/wywoływać wszystko w zakresie globalnym. -
W Node.js każdy moduł ma swój własny zakres. Moduł nie może uzyskać bezpośredniego dostępu do elementów zdefiniowanych w innym module, chyba że zdecyduje się je ujawnić. Aby ujawnić rzeczy z modułu, muszą być przypisane do
exportslubmodule.exports. Aby moduł mógł uzyskać dostęp doexportsinnego modułu lubmodule.exports, musi używaćrequire().
W kodzie var pg = require('pg'); ładuje pg moduł, klient PostgreSQL dla Node.js. Pozwala to Twojemu kodowi na dostęp do funkcji API klienta PostgreSQL poprzez pg zmienna.
Dlaczego działa w węźle, ale nie na stronie internetowej?
require() , module.exports i exports to interfejsy API systemu modułów, które są specyficzne dla Node.js. Przeglądarki nie implementują tego systemu modułowego.
Ponadto, zanim udało mi się uruchomić w węźle, musiałem wykonać npm install pg . O co chodzi?
NPM to usługa repozytorium pakietów, która obsługuje opublikowane moduły JavaScript. npm install to polecenie, które pozwala pobierać pakiety z ich repozytorium.
Gdzie to zostało umieszczone i jak JavaScript go znajduje?
Cli npm umieszcza wszystkie pobrane moduły w node_modules katalog, w którym uruchomiłeś npm install . Node.js zawiera bardzo szczegółową dokumentację dotyczącą tego, jak moduły znajdują inne moduły, w tym znajdowanie node_modules katalog.