Alors, qu'est-ce que c'est que "exiger?"
require()
ne fait pas partie de l'API JavaScript standard. Mais dans Node.js, c'est une fonction intégrée avec un objectif particulier :charger des modules.
Les modules sont un moyen de diviser une application en fichiers séparés au lieu d'avoir toute votre application dans un seul fichier. Ce concept est également présent dans d'autres langages avec des différences mineures dans la syntaxe et le comportement, comme le include
de C , l'import
de Python , et ainsi de suite.
Une grande différence entre les modules Node.js et le JavaScript du navigateur est la façon dont le code d'un script est accessible à partir du code d'un autre script.
-
Dans le JavaScript du navigateur, les scripts sont ajoutés via le
<script>
élément. Lorsqu'ils s'exécutent, ils ont tous un accès direct à la portée globale, un "espace partagé" entre tous les scripts. N'importe quel script peut librement définir/modifier/supprimer/appeler n'importe quoi sur la portée globale. -
Dans Node.js, chaque module a sa propre portée. Un module ne peut pas accéder directement aux éléments définis dans un autre module à moins qu'il ne choisisse de les exposer. Pour exposer les éléments d'un module, ils doivent être affectés à des
exports
oumodule.exports
. Pour qu'un module accède auxexports
d'un autre module oumodule.exports
, il doit utiliserrequire()
.
Dans votre code, var pg = require('pg');
charge le pg
module, un client PostgreSQL pour Node.js. Cela permet à votre code d'accéder aux fonctionnalités des API du client PostgreSQL via le pg
variables.
Pourquoi cela fonctionne-t-il dans un nœud mais pas dans une page Web ?
require()
, module.exports
et exports
sont des API d'un système de module spécifique à Node.js. Les navigateurs n'implémentent pas ce système de modules.
De plus, avant de le faire fonctionner dans node, je devais faire
npm install pg
. De quoi s'agit-il ?
NPM est un service de référentiel de packages qui héberge des modules JavaScript publiés. npm install
est une commande qui vous permet de télécharger des packages à partir de leur référentiel.
Où l'a-t-il placé et comment Javascript le trouve-t-il ?
Le npm cli place tous les modules téléchargés dans un node_modules
répertoire où vous avez exécuté npm install
. Node.js a une documentation très détaillée sur la façon dont les modules trouvent d'autres modules, ce qui inclut la recherche d'un node_modules
répertoire.