Takže co je to "vyžadovat?"
require() není součástí standardního JavaScript API. Ale v Node.js je to vestavěná funkce se speciálním účelem:načítat moduly.
Moduly představují způsob, jak rozdělit aplikaci do samostatných souborů namísto toho, abyste měli celou aplikaci v jednom souboru. Tento koncept je přítomen i v jiných jazycích s menšími rozdíly v syntaxi a chování, jako je include v jazyce C , import Pythonu , a tak dále.
Jedním z velkých rozdílů mezi moduly Node.js a JavaScriptem prohlížeče je způsob, jakým se ke kódu jednoho skriptu přistupuje z kódu jiného skriptu.
-
V JavaScriptu prohlížeče se skripty přidávají pomocí
<script>živel. Když jsou spuštěny, mají všechny přímý přístup ke globálnímu rozsahu, „sdílenému prostoru“ mezi všemi skripty. Jakýkoli skript může libovolně definovat/upravovat/odebírat/volat cokoli v globálním rozsahu. -
V Node.js má každý modul svůj vlastní rozsah. Modul nemůže přímo přistupovat k věcem definovaným v jiném modulu, pokud se nerozhodne je vystavit. Chcete-li vystavit věci z modulu, musí být přiřazeny k
exportsnebomodule.exports. Pro modul pro přístup kexportsjiného modulu nebomodule.exports, musí používatrequire().
V kódu var pg = require('pg'); načte pg modul, klient PostgreSQL pro Node.js. To umožňuje vašemu kódu přistupovat k funkcím rozhraní API klienta PostgreSQL prostřednictvím pg proměnná.
Proč to funguje v uzlu, ale ne na webové stránce?
require() , module.exports a exports jsou API modulového systému, který je specifický pro Node.js. Prohlížeče tento modulový systém neimplementují.
Než jsem to zprovoznil v uzlu, musel jsem také provést
npm install pg. O co jde?
NPM je služba úložiště balíčků, která hostí publikované moduly JavaScriptu. npm install je příkaz, který vám umožňuje stahovat balíčky z jejich úložiště.
Kam to vložil a jak to Javascript najde?
npm cli vloží všechny stažené moduly do node_modules adresář, ve kterém jste spustili npm install . Node.js má velmi podrobnou dokumentaci o tom, jak moduly nacházejí jiné moduly, včetně nalezení node_modules adresář.