Différences entre l'exigence et l'importation

Les modules sont une construction clé pour connaître JavaScript. Nous couvrirons les modules JavaScript: exiger et importer au cours de cet article Require vs Import.

Ces modules vous permettent de mettre par écrit du code réutilisable. En utilisant Node Package Manager (NPM), vous publierez votre module dans la communauté. De plus, NPM vous permet d'utiliser des modules créés par d'autres développeurs.

Il y a 2 systèmes de modules que vous sélectionnez en JavaScript:

Importation de modules à l'aide de require et commercialisation à l'aide d'un module. Exportations et exportations. Foo

Importation de modules à l'aide de l'importation ES6 et commercialisation à l'aide de l'exportation ES6.

Existe-t-il des avantages de performance à utiliser l'un par rapport à l'autre? Y a-t-il le reste que nous devons toujours reconnaître si nous avons tendance à utiliser des modules ES6 plutôt que des modules Node? Essayons de résoudre ce problème.

Qu'est-ce qui est requis?

Exiger sont habitués à consommer des modules. Il vous permet d'incorporer des modules dans vos programmes. Vous embrasserez les modules Node.js intrinsèquement centraux, les modules communautaires (modules de nœuds) et les modules natifs.

Disons que nous aimerions analyser un fichier à partir du système de fichiers. Le nœud contient un module principal appelé «fs»:

const fs = require ('fs');

fs.readFile ('./ file.txt', 'utf-8', (err, data) => (

if (err) (throw err; )

console.log ('data:', data);

));

Comme vous le verrez, nous avons tendance à importer le module «fs» dans notre programme. Il nous permet de n'importe quelle fonction qui lui est attachée, comme "readFile".

Exiger peut rechercher des fichiers dans l'ordre suivant:

Modules Node.js intégrés (comme fs)

Modules dans le dossier node_modules.

Si le nom du module contient un ./, / ou ../, il recherchera le répertoire dans le chemin donné. Il correspond aux extensions: * .js, * .json et * .node.

Fonctionnalités requises:

  • Vous aurez un chargement dynamique partout où le nom du module chargé n'est pas prédéfini / statique, ou partout où vous ne chargez absolument pas un module à condition qu'il soit «vraiment requis» (en fonction du flux de code lié).
  • Le chargement est synchrone. Si vous avez plusieurs demandes, elles sont chargées et traitées une par une.
  • Vous aurez un chargement dynamique partout où le nom du module chargé n'est pas prédéfini / statique, ou partout où vous ne chargez absolument pas un module à condition qu'il soit «vraiment requis» (en fonction du flux de code lié).
  • Le chargement est synchrone. Si vous avez plusieurs demandes, elles sont chargées et traitées une par une.
  • L'exigence n'est pas basée sur la plupart du temps. Il est extrêmement peu probable que les modules ES6 existent actuellement.

Le chargement réel de n'importe quel module à l'aide de require () se déroule en cinq étapes.

Résolution

Chargement

Emballage

Évaluation

Mise en cache

La résolution de la première étape est une étape fermée où node.js calcule les méthodes de fichier, etc. dans la seconde qui se charge, node extrait le code dans la méthode actuelle. En encapsulant, le code dans l'opération fonctionne comme indiqué plus haut que l'envoie à VM pour évaluation et le met finalement en cache.

Ainsi, principalement le nœud n'est jamais au courant des symboles qu'un module commonJS va exporter jusqu'à et à moins que le module ne soit vraiment évalué. Et c'est souvent la plus grande distinction avec les modules ECMAScript, car ESM est lexical et donc, les symboles exportés sont mieux connus avant que le code ne soit vraiment évalué.

Qu'est-ce que l'importation?

Il existe également une proposition d'importation () pour former des déclarations d'importation imbriquées. Contrairement au mot-clé lexical import, import () oper est traité au moment de l'analyse (plus comme require). La syntaxe est identique à la suivante.

import ("foo"). then ((module) =>) .catch ((err) =>);

Lorsque le module ESM associé est analysé, puis avant d'être évalué par la machine virtuelle, une structure fermée appelée enregistrement de module est créée. En conséquence, toute erreur concernant les inconvénients de quelques images exportées peut soulever une erreur avant l'analyse.

Cas d'utilisation

  • La charge du module à la demande est possible.
  • La charge conditionnelle des modules est faisable
  • Une promesse comme la gestion asynchrone.

Fonctions d'importation:

  • Vous utiliserez les importations nommées pour, par sélection, charger uniquement les éléments que vous souhaitez. Qui économisera de la mémoire?
  • L'importation est asynchrone (et dans le chargeur de module ES6 actuel, bien sûr) et peut effectuer une touche plus élevée.
  • Vous utiliserez les importations nommées pour, par sélection, charger uniquement les éléments que vous souhaitez. Qui économisera de la mémoire?
  • L'importation est asynchrone (et dans le chargeur de module ES6 actuel, bien sûr) et peut effectuer une touche plus élevée.
  • Les importations ne semblent pas pouvoir être obtenues dans Node à cause de la version 6.
  • Cependant, il serait disponible dans les futures versions. Vous l'utiliserez de nos jours, en utilisant des transpilers similaires à Traceur Compiler, Babel ou Rollup.

Comparaison directe entre l'exigence et l'importation (infographie)

Voici les 4 principales différences entre Exiger et Importer

Différences clés entre exiger et importer

Require vs Import sont tous deux des choix populaires sur le marché; laissez-nous discuter de quelques-unes des principales différences entre exiger et importer:

  • L'exigence est davantage une analyse dynamique et l'importation est davantage une analyse statique
  • Requiert une erreur de lancement lors de l'exécution et une erreur d'importation génère lors de l'analyse
  • Require est Nonlexical et Import est Lexical
  • Nécessite de rester là où ils ont placé le fichier et les importations sont triées en haut du fichier.
  • L'importation est toujours exécutée au tout début du fichier et ne peut pas être exécutée sous condition. D'autre part, require peut être utilisé en ligne, conditionnellement,

Tableau de comparaison Exiger vs Importer

Comme vous pouvez le voir, il existe de nombreuses comparaisons entre l'exigence et l'importation. Regardons la comparaison supérieure entre Exiger et Importer ci-dessous

Non.ExigerImportation
1Syntaxe:

var dep = require («dep»);

console.log (dep.bar);

dep.foo ();

Syntaxe:

import (foo, bar) de "dep";

console.log (barre);

foo ();

2Comme l'importation reste à l'étape trois et n'est pas appliquée par les navigateurs en mode natif, nous ne pouvons pas exécuter de performances.Actuellement, une fois que vous utilisez l'importation dans votre code, vos transpilers le demandent, le système de modélisation commonJS. Par conséquent, pour le moment, chacun est le même.
3Bien qu'il n'y ait aucun gain de performances pour le moment, cependant, je conseillerai toujours d'utiliser import over require car il est sur le point d'être natif dans JS et fonctionnera (juste en raison de son natif) plus que requis.Le résultat de l'importation étant natif, la condition requise n'est donc pas supérieure à celle de l'importation.
4Vous aurez un chargement dynamique partout où le nom du module chargé n'est pas prédéfini. Le chargement est synchrone. Si vous avez plusieurs demandes, elles sont chargées et traitées une par une. ES6Vous pouvez utiliser les importations nommées pour, par sélection, charger uniquement les éléments que vous souhaitez. Qui économisera de la mémoire? L'importation est asynchrone (et dans le chargeur de module ES6 actuel, bien sûr) et peut effectuer une touche plus élevée. En outre, le système de modules requis n'est généralement pas basé sur la plupart du temps. Il est extrêmement peu probable que les modules ES6 existent actuellement.

Conclusion - Exiger vs importer

Nous avons appris comment produire des modules Node.js et l'utiliser dans notre code. Les modules nous permettent d'utiliser le code simplement. Ils offrent une fonctionnalité qui est isolée des modules alternatifs. Un code est moins compliqué à gérer une fois qu'il est en petits morceaux de la taille d'une bouchée. C'est souvent la pensée derrière la limitation des fonctions à une seule tâche ou le fait que les fichiers contiennent uniquement une partie ou une partie à la fois. Si vous avez une application sophistiquée et que vous devez faire défiler de nombreuses ou des milliers de lignes de code, la tâche de déboguer ou simplement de comprendre l'application devient plus difficile.

Heureusement, JavaScript nous aide avec cela en ayant Import vs Require. Cependant, vous allez écrire du code dans un fichier et partager ce code, par conséquent, il peut être utilisé par un autre fichier ou des fichiers. J'espère que vous devez maintenant avoir une idée plus juste de l'importation et de l'exigence. Restez à l'écoute sur notre blog pour plus d'articles comme ceux-ci.

Article recommandé

Cela a été un guide pour les principales différences entre Exiger et Importer. Ici, nous discutons également des principales différences entre Exiger et Importer avec des infographies et un tableau de comparaison. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Node.js vs PHP Performance
  2. Raspberry Pi 3 contre Arduino
  3. Tableau C # vs liste
  4. C ++ vs objectif C
  5. C ++ Vector vs Array: que préférer
  6. C ++ vs Visual C ++: Quel est le meilleur