Entonces, ¿qué es este "requerir"?
require()
no es parte de la API de JavaScript estándar. Pero en Node.js, es una función integrada con un propósito especial:cargar módulos.
Los módulos son una forma de dividir una aplicación en archivos separados en lugar de tener toda su aplicación en un solo archivo. Este concepto también está presente en otros lenguajes con pequeñas diferencias en la sintaxis y el comportamiento, como include
de C. , la import
de Python , y así sucesivamente.
Una gran diferencia entre los módulos de Node.js y el JavaScript del navegador es cómo se accede al código de un script desde el código de otro script.
-
En JavaScript del navegador, los scripts se agregan a través de
<script>
elemento. Cuando se ejecutan, todos tienen acceso directo al alcance global, un "espacio compartido" entre todos los scripts. Cualquier script puede definir/modificar/eliminar/llamar libremente cualquier cosa en el ámbito global. -
En Node.js, cada módulo tiene su propio alcance. Un módulo no puede acceder directamente a las cosas definidas en otro módulo a menos que decida exponerlas. Para exponer elementos de un módulo, deben asignarse a
exports
omodule.exports
. Para que un módulo acceda a lasexports
de otro módulo omodule.exports
, debe usarrequire()
.
En tu código, var pg = require('pg');
carga el pg
módulo, un cliente PostgreSQL para Node.js. Esto permite que su código acceda a la funcionalidad de las API del cliente de PostgreSQL a través de pg
variables.
¿Por qué funciona en el nodo pero no en una página web?
require()
, module.exports
y exports
son API de un sistema de módulos que es específico de Node.js. Los navegadores no implementan este sistema de módulos.
Además, antes de que funcionara en el nodo, tuve que hacer npm install pg
. ¿De qué se trata?
NPM es un servicio de repositorio de paquetes que aloja módulos de JavaScript publicados. npm install
es un comando que te permite descargar paquetes de su repositorio.
¿Dónde lo puso y cómo lo encuentra Javascript?
El npm cli coloca todos los módulos descargados en un node_modules
directorio donde ejecutó npm install
. Node.js tiene documentación muy detallada sobre cómo los módulos encuentran otros módulos, lo que incluye encontrar un node_modules
directorio.