J'apprends node.js et je me demande pourquoi il utilise la syntaxe require
plutôt que la syntaxe import
qui React utilise.
c'est à dire.
const Validator = require("validator");
CONTRE
import Validator from "validator";
Je pensais que import
est es6 mais je ne pense pas que cela explique pourquoi il n'est pas utilisé dans le nœud.
import
et default
sont des fonctionnalités ES6 plus récentes, non encore utilisées par le nœud. Node est en fait déjà en train de mettre en œuvre les nouvelles fonctionnalités comme expérience : avec le --experimental-modules
drapeau et uniquement pour les fichiers enregistrés avec .mjs
extension.
Des transpilers comme babel permettent d'écrire des spécifications modernes, approuvées et/ou expérimentales ECMAScript . Dans un écosystème de bundlers comme Webpack avec des transpilers comme babel, il devient facile d'écrire du javascript maintenable et évolutif, tandis que le code reste largement supporté car il est transformé en commonjs
(le format vous voyez reconnaissable par require
(la vieille école import
) et module.exports
(la vieille école export
).
Je pensais que l'importation est es6 mais je ne pense pas que cela explique pourquoi il n'est pas utilisé dans le nœud.
Tout comme la façon dont NodeJS implémente l'intégralité de sa bibliothèque avec des tonnes de fonctions asynchrones qui ne prennent en charge qu'une approche basée sur le rappel. En pensant de cette façon, vous vous rendrez compte que, tôt ou tard, le framework NodeJS prendra certainement en charge la syntaxe import
et mettra à niveau toutes ces fonctions asynchrones pour prendre en charge les promesses.
Probablement pour des raisons historiques. node.js et chrome (moteur v8) sont plus anciens que la norme ES6.
D'autre part, voir: Comment puis-je utiliser une importation es6 dans le nœud?
Vous pouvez également utiliser l'importation.