Så vad är detta "kräver?"
require() är inte en del av standard JavaScript API. Men i Node.js är det en inbyggd funktion med ett speciellt syfte:att ladda moduler.
Moduler är ett sätt att dela upp ett program i separata filer istället för att ha alla dina program i en fil. Detta koncept finns även på andra språk med mindre skillnader i syntax och beteende, som C:s include , Pythons import , och så vidare.
En stor skillnad mellan Node.js-moduler och webbläsarens JavaScript är hur ett skripts kod nås från ett annat skripts kod.
-
I webbläsarens JavaScript läggs skript till via
<script>element. När de körs har de alla direkt tillgång till det globala scopet, ett "delat utrymme" bland alla skript. Alla skript kan fritt definiera/modifiera/ta bort/anropa vad som helst inom det globala omfånget. -
I Node.js har varje modul sin egen omfattning. En modul kan inte direkt komma åt saker som är definierade i en annan modul om den inte väljer att exponera dem. För att exponera saker från en modul måste de tilldelas
exportsellermodule.exports. För att en modul ska få tillgång till en annan modulsexportsellermodule.exports, det måste användarequire().
I din kod, var pg = require('pg'); laddar pg modul, en PostgreSQL-klient för Node.js. Detta gör att din kod får tillgång till funktionerna i PostgreSQL-klientens API:er via pg variabel.
Varför fungerar det i nod men inte på en webbsida?
require() , module.exports och exports är API:er för ett modulsystem som är specifikt för Node.js. Webbläsare implementerar inte detta modulsystem.
Dessutom, innan jag fick det att fungera i noden, var jag tvungen att göra
npm install pg. Vad handlar det om?
NPM är en paketförvarstjänst som är värd för publicerade JavaScript-moduler. npm install är ett kommando som låter dig ladda ner paket från deras arkiv.
Var placerade den den och hur hittar Javascript den?
npm cli placerar alla nedladdade moduler i en node_modules katalog där du körde npm install . Node.js har mycket detaljerad dokumentation om hur moduler hittar andra moduler, vilket inkluderar att hitta en node_modules katalog.