Allora cos'è questo "richiedere?"
require()
non fa parte dell'API JavaScript standard. Ma in Node.js è una funzione integrata con uno scopo speciale:caricare i moduli.
I moduli sono un modo per dividere un'applicazione in file separati invece di avere tutta l'applicazione in un unico file. Questo concetto è presente anche in altri linguaggi con differenze minori nella sintassi e nel comportamento, come include
di C , import
di Python , e così via.
Una grande differenza tra i moduli Node.js e JavaScript del browser è il modo in cui si accede al codice di uno script dal codice di un altro script.
-
Nel browser JavaScript, gli script vengono aggiunti tramite il
<script>
elemento. Quando vengono eseguiti, hanno tutti accesso diretto all'ambito globale, uno "spazio condiviso" tra tutti gli script. Qualsiasi script può definire/modificare/rimuovere/chiamare liberamente qualsiasi cosa nell'ambito globale. -
In Node.js, ogni modulo ha il proprio ambito. Un modulo non può accedere direttamente alle cose definite in un altro modulo a meno che non scelga di esporle. Per esporre le cose da un modulo, devono essere assegnate a
exports
omodule.exports
. Affinché un modulo acceda alleexports
di un altro modulo omodule.exports
, deve utilizzarerequire()
.
Nel tuo codice, var pg = require('pg');
carica il pg
module, un client PostgreSQL per Node.js. Ciò consente al tuo codice di accedere alla funzionalità delle API del client PostgreSQL tramite il pg
variabile.
Perché funziona nel nodo ma non in una pagina web?
require()
, module.exports
e exports
sono le API di un sistema di moduli specifico per Node.js. I browser non implementano questo sistema di moduli.
Inoltre, prima di farlo funzionare in node, ho dovuto fare npm install pg
. Di cosa si tratta?
NPM è un servizio di repository di pacchetti che ospita moduli JavaScript pubblicati. npm install
è un comando che ti permette di scaricare i pacchetti dal loro repository.
Dove l'ha messo e come lo trova Javascript?
Il cli npm mette tutti i moduli scaricati in un node_modules
directory in cui hai eseguito npm install
. Node.js ha una documentazione molto dettagliata su come i moduli trovano altri moduli, inclusa la ricerca di un node_modules
directory.