Unterschiede zwischen Require und Import

Module sind ein Schlüsselkonstrukt, um JavaScript zu kennen. Wir werden uns mit JavaScript-Modulen befassen: Erfordern und importieren Sie diese in diesem Artikel.

Mit diesen Modulen können Sie wiederverwendbaren Code schreiben. Mit dem Node Package Manager (NPM) veröffentlichen Sie Ihr Modul in der Community. Außerdem können Sie mit NPM Module verwenden, die von alternativen Entwicklern erstellt wurden.

Es gibt 2 Modulsysteme, die Sie in JavaScript auswählen:

Importieren von Modulen mit require und Kommerzialisierung mit einem Modul. Exporte und Exporte. Foo

Importieren von Modulen mit ES6-Import und Kommerzialisierung mit ES6-Export.

Gibt es irgendwelche Leistungsvorteile, wenn man eins übereinander verwendet? Gibt es den Rest, den wir immer erkennen müssen, wenn wir die Tendenz haben, ES6-Module anstelle von Node-Modulen zu verwenden? Versuchen wir, dieses Problem zu lösen.

Was ist erforderlich?

Require sind es gewohnt, Module zu konsumieren. Damit können Sie Module in Ihre Programme einbinden. Sie werden die Kernmodule von Node.js, die Community-basierten Module (Knotenmodule) und die nativen Module umfassen.

Angenommen, wir möchten eine Datei aus dem Dateisystem scannen. Der Knoten enthält ein Kernmodul, das als 'fs' bezeichnet wird:

const fs = require ('fs');

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

if (err) (throw err; )

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

));

Wie Sie sehen werden, besteht die Tendenz, das Modul "fs" in unser Programm zu importieren. Es erlaubt uns, alle damit verbundenen Funktionen wie "readFile" auszuführen.

Require kann sich in der folgenden Reihenfolge nach Dateien umsehen:

Eingebaute Node.js-Kernmodule (wie fs)

Module im Ordner node_modules.

Wenn der Modulname ein ./, / oder ../ enthält, sucht er im angegebenen Pfad nach dem Verzeichnis. Es entspricht den Erweiterungen: * .js, * .json und * .node.

Benötige Features:

  • Sie werden dynamisch geladen, wenn der Name des geladenen Moduls nicht vordefiniert / statisch ist oder wenn Sie ein Modul nicht unbedingt laden, sofern es "wirklich erforderlich" ist (abhängig vom gebundenen Codefluss).
  • Das Laden ist synchron. Das heißt, wenn Sie mehrere Anforderungen haben, werden diese nacheinander geladen und verarbeitet.
  • Sie werden dynamisch geladen, wenn der Name des geladenen Moduls nicht vordefiniert / statisch ist oder wenn Sie ein Modul nicht unbedingt laden, sofern es "wirklich erforderlich" ist (abhängig vom gebundenen Codefluss).
  • Das Laden ist synchron. Das heißt, wenn Sie mehrere Anforderungen haben, werden diese nacheinander geladen und verarbeitet.
  • Die Anforderung ist meist nicht üblich. Es ist äußerst unwahrscheinlich, dass es derzeit übliche ES6-Module gibt.

Das eigentliche Laden eines Moduls mit require () erfolgt in fünf Schritten.

Auflösung

Wird geladen

Verpackung

Auswertung

Caching

Die erste Schrittauflösung ist ein eingeschlossener Schritt, bei dem node.js die Dateimethoden usw. innerhalb der Sekunde berechnet, die geladen wird, und node den Code innerhalb der aktuellen Methode abruft. Beim Einpacken wird der Code innerhalb des Vorgangs wie oben gezeigt eingepackt und zur Auswertung an die VM gesendet, um ihn schließlich zwischenzuspeichern.

Daher weiß Node in erster Linie nie, welche Symbole von einem CommonJS-Modul exportiert werden, bis das Modul wirklich ausgewertet wird. Dies ist häufig der größte Unterschied bei ECMAScript-Modulen, da ESM lexikalisch ist und die exportierten Symbole daher besser bekannt sind, bevor der Code wirklich ausgewertet wird.

Was ist Import?

Es gibt einen Vorschlag, import () zu betreiben, um verschachtelte Importanweisungen zu bilden. Im Gegensatz zum lexikalischen Schlüsselwort import wird import () oper zum Zeitpunkt oder zur Analyse verarbeitet (eher erforderlich). Die Syntax ist wie folgt.

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

Wenn das zugeordnete ESM-Modul analysiert wird, wird vor der Auswertung durch die VM eine geschlossene Struktur erstellt, die als Moduldatensatz bezeichnet wird. Infolgedessen kann ein Fehler, der die Unannehmlichkeit einiger exportierter Bilder betrifft, vor der Analyse einen Fehler auslösen.

Anwendungsfälle

  • Laden von Modulen nach Bedarf ist möglich.
  • Bedingtes Laden von Modulen ist möglich
  • Ein Versprechen wie asynchrones Handling.

Importfunktionen:

  • Sie werden benannte Importe verwenden, um durch Auswahl nur die Elemente zu laden, die Sie möchten. Was spart Speicher?
  • Der Import ist asynchron (und im aktuellen ES6-Modul-Loader natürlich auch) und führt möglicherweise zu höheren Ergebnissen.
  • Sie werden benannte Importe verwenden, um durch Auswahl nur die Elemente zu laden, die Sie möchten. Was spart Speicher?
  • Der Import ist asynchron (und im aktuellen ES6-Modul-Loader natürlich auch) und führt möglicherweise zu höheren Ergebnissen.
  • Aufgrund der Version 6 scheinen Importe in Node nicht verfügbar zu sein.
  • Es ist jedoch in zukünftigen Versionen verfügbar. Sie werden es heutzutage mit ähnlichen Transpilern wie Traceur Compiler, Babel oder Rollup verwenden.

Head to Head Vergleich B etween Require vs Import (Infografiken)

Nachfolgend sind die vier wichtigsten Unterschiede zwischen Require und Import aufgeführt

Hauptunterschiede zwischen Require und Import

Sowohl Require als auch Import sind beliebte Optionen auf dem Markt. Lassen Sie uns einige der wichtigsten Unterschiede zwischen Require und Import diskutieren:

  • Require ist eher eine dynamische Analyse und Import ist eher eine statische Analyse
  • Require Throws-Fehler zur Laufzeit und Import-Throws-Fehler beim Parsen
  • Require ist Nonlexical und Import ist Lexical
  • Muss dort bleiben, wo sie die Datei abgelegt haben, und Importe werden an den Anfang der Datei sortiert.
  • Der Import wird immer am Anfang der Datei ausgeführt und kann nicht bedingt ausgeführt werden. Andererseits kann require inline verwendet werden, sofern

Vergleichstabelle vs Import erforderlich

Wie Sie sehen, gibt es viele Vergleiche zwischen Require und Import. Schauen wir uns den oberen Vergleich zwischen Require und Import unten an

S. No.BenötigenImportieren
1Syntax :

var dep = require ("dep");

console.log (dep.bar);

dep.foo ();

Syntax :

(foo, bar) aus "dep" importieren;

console.log (bar);

foo ();

2Da der Import in Stufe drei verbleibt und von Browsern nicht nativ erzwungen wird, können wir keine Leistung erbringen.Sobald Sie den Import in Ihrem Code verwenden, werden Ihre Transpiler das CommonJS-Modellierungssystem wieder benötigen. Deshalb ist heutzutage jeder gleich.
3Im Moment gibt es zwar keinen Leistungsgewinn, aber ich rate Ihnen trotzdem, import over require zu verwenden, da es im Begriff ist, in JS native zu sein und (nur aufgrund seiner native) eine höhere Leistung als erforderlich zu erbringen.Als Ergebnis des Imports ist native daher erfordern nicht höher als zu importieren zu vergleichen
4Sie werden dynamisch geladen, wenn der Name des geladenen Moduls nicht vordefiniert ist. Das Laden ist synchron. Das heißt, wenn Sie mehrere Anforderungen haben, werden diese nacheinander geladen und verarbeitet. ES6Sie können benannte Importe verwenden, um durch Auswahl nur die Elemente zu laden, die Sie möchten. Was spart Speicher? Der Import ist asynchron (und im aktuellen ES6-Modul-Loader natürlich auch) und führt möglicherweise zu höheren Ergebnissen. Das erforderliche Modulsystem basiert meistens nicht auf der üblichen Vorgehensweise. Es ist äußerst unwahrscheinlich, dass es derzeit übliche ES6-Module gibt.

Fazit - Benötigen Sie vs Import

Wir haben gelernt, wie man Node.js-Module erzeugt und in unserem Code verwendet. Module erlauben es uns, Code einfach zu nutzen. Sie bieten Praktikabilität, die von alternativen Modulen isoliert ist. Die Verwaltung eines Codes ist weniger kompliziert, sobald er in kleinen, mundgerechten Stücken vorliegt. Dies ist oft die Überlegung, Funktionen auf nur eine Aufgabe zu beschränken oder Dateien zu haben, die jeweils nur einen Teil oder nur einen Teil enthalten. Wenn Sie eine ausgefallene App haben und durch viele oder Tausende von Codezeilen scrollen müssen, wird die Aufgabe, die App zu debuggen oder einfach zu verstehen, umso schwieriger.

Zum Glück hilft uns JavaScript dabei, indem wir Import vs Require haben. Sie schreiben jedoch Code in eine Datei und geben diesen Code frei. Daher kann er von einer oder mehreren anderen Dateien verwendet werden. Ich hoffe, Sie haben jetzt eine bessere Vorstellung von Import vs Require. Weitere Artikel wie diese finden Sie in unserem Blog.

Empfohlener Artikel

Dies war eine Anleitung zu den wichtigsten Unterschieden zwischen Require und Import. Hier werden auch die Hauptunterschiede zwischen Erfordernis und Importieren mit Infografiken und die Vergleichstabelle erläutert. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Node.js vs PHP-Leistung
  2. Raspberry Pi 3 gegen Arduino
  3. C # Array vs Liste
  4. C ++ vs Ziel C
  5. C ++ Vector vs Array: Was ist zu bevorzugen
  6. C ++ vs Visual C ++: Welches ist das beste