JavaScript import vs require

Valentine Kagwiria 12 octobre 2023
  1. require() en JavaScript
  2. import() en JavaScript
  3. Différences majeures entre require et import en JavaScript
JavaScript import vs require

Cet article présente les principales différences entre les instructions JavaScript require() et import(). Il donne également un contexte et explique où chacun peut être utilisé avec ES6 et CommonJS.

require() en JavaScript

Il s’agit d’une instruction node.js intégrée et est le plus souvent utilisée pour inclure des modules d’autres fichiers séparés. Il fonctionne en lisant le fichier JS, en l’exécutant et en renvoyant l’objet en cours d’exportation. Il est très populaire pour sa capacité à intégrer des modules de nœuds principaux, des modules communautaires et même des modules locaux.

Nous pouvons utiliser require() pour inclure un module intégré en JavaScript.

const express = require('express');

Il est également facile d’inclure un module local.

require('local_module');

Comme illustré ci-dessus, node.js tentera de trouver le local_module.js dans les chemins spécifiés. La sortie différera en fonction de ce que le nœud trouve: si le fichier existe dans le chemin spécifié, la sortie affichera le contenu du module. Si ce n’est pas le cas, vous pouvez recevoir une erreur telle que celle ci-dessous:

Error: Cannot find module 'local_module'
at Function.Module._resolveFilename(module.js: 470: 15)
at Function.Module._load(module.js: 418: 25)
at Module.require(module.js: 498: 17)
at require(internal / module.js: 20: 19)
at repl: 1: 1
at ContextifyScript.Script.runInThisContext(vm.js: 23: 33)
at REPLServer.defaultEval(repl.js: 336: 29)
at bound(domain.js: 280: 14)
at REPLServer.runBound[as eval](domain.js: 293: 12)
at REPLServer.onLine(repl.js: 533: 10)

import() en JavaScript

import() est un module ES6. Avec export(), ils sont communément appelés importation et exportation ES6. Cela signifie essentiellement que les instructions ne peuvent pas être utilisées avec d’autres types de fichiers en dehors des modules ES.

L’instruction import() permet à l’utilisateur d’importer ses modules et de les utiliser dans le programme. La syntaxe est:

import './this-module.js';

L’utilisateur spécifie le chemin du fichier vers le module en cours d’importation.

Différences majeures entre require et import en JavaScript

Alors que require() est une instruction node.js qui utilise CommonJS, import() n’est utilisé qu’avec ES6.

require() reste là où il a été placé dans le fichier (non lexical), et import() se déplace toujours vers le haut.

require() peut être appelé pour être utilisé à tout moment dans le programme, mais import() ne peut être exécuté qu’au début du fichier.

La plupart des gens exécutent directement du code avec l’instruction require() mais préfèrent utiliser l’indicateur de fonctionnalité du module expérimental lorsqu’ils travaillent avec import().

Enfin, tous les fichiers utilisant l’instruction require() sont enregistrés en tant que fichiers .js, tandis que ceux avec import() ne peuvent être enregistrés qu’en tant que fichiers .mjs.

Ils ne peuvent pas être utilisés dans un programme en même temps.

Généralement, import() est plus préféré car il permet à l’utilisateur de choisir et de charger uniquement les éléments du module dont il a besoin. L’instruction fonctionne également mieux que require() et économise de la mémoire.