Så hvad er dette "kræve?"
require() er ikke en del af standard JavaScript API. Men i Node.js er det en indbygget funktion med et særligt formål:at indlæse moduler.
Moduler er en måde at opdele en applikation i separate filer i stedet for at have hele din applikation i én fil. Dette koncept er også til stede på andre sprog med mindre forskelle i syntaks og adfærd, såsom C's include , Pythons import , og så videre.
En stor forskel mellem Node.js-moduler og browser-JavaScript er, hvordan man får adgang til et scripts kode fra et andet scripts kode.
-
I browser JavaScript tilføjes scripts via
<script>element. Når de udføres, har de alle direkte adgang til det globale scope, et "delt rum" blandt alle scripts. Ethvert script kan frit definere/ændre/fjerne/kalde hvad som helst på det globale område. -
I Node.js har hvert modul sit eget omfang. Et modul kan ikke direkte få adgang til ting, der er defineret i et andet modul, medmindre det vælger at afsløre dem. For at eksponere ting fra et modul skal de tildeles
exportsellermodule.exports. For at et modul skal få adgang til et andet modulsexportsellermodule.exports, det skal brugerequire().
I din kode, var pg = require('pg'); indlæser pg modul, en PostgreSQL-klient til Node.js. Dette giver din kode adgang til funktionaliteten af PostgreSQL-klientens API'er via pg variabel.
Hvorfor virker det i node, men ikke på en webside?
require() , module.exports og exports er API'er for et modulsystem, der er specifikt for Node.js. Browsere implementerer ikke dette modulsystem.
Før jeg fik det til at virke i node, skulle jeg også udføre npm install pg . Hvad handler det om?
NPM er en pakkeopbevaringstjeneste, der er vært for publicerede JavaScript-moduler. npm install er en kommando, der lader dig downloade pakker fra deres lager.
Hvor blev det placeret, og hvordan finder Javascript det?
npm cli'en placerer alle de downloadede moduler i en node_modules bibliotek, hvor du kørte npm install . Node.js har meget detaljeret dokumentation om, hvordan moduler finder andre moduler, hvilket inkluderer at finde en node_modules bibliotek.