Forskelle mellem kræver vs import

Moduler er en nøglekonstruktion til at kende JavaScript. Vi dækker JavaScript-moduler: kræver og importerer i løbet af denne artikel med krav om import.

Disse moduler giver dig mulighed for at skrive skriftlig genanvendelig kode. Ved at bruge Node Package Manager (NPM) offentliggør du dit modul til samfundet. NPM tillader dig også at bruge moduler oprettet af alternative udviklere.

Der er 2 modulssystem, du vælger i JavaScript:

Import af moduler ved brug kræver og kommercialisering ved hjælp af et modul. Eksport og eksport. foo

Import af moduler ved hjælp af ES6-import og kommercialisme ved hjælp af ES6-eksport.

Er der nogen ydeevne til at bruge den ene over den anden? Er der resten, som vi altid skal genkende, hvis vi har en tendens til at bruge ES6-moduler over node-moduler? Lad os forsøge at løse dette problem.

Hvad kræves?

Krævning er vant til at forbruge moduler. Det giver dig mulighed for at integrere moduler i dine programmer. Du omfavner iboende Node.js-moduler, community-baserede moduler (nodemoduler) og native moduler.

Lad os sige, at vi gerne vil scanne en fil fra filsystemet. Knudepunkt indeholder et kernemodul kaldet 'fs':

const fs = kræver ('fs');

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

hvis (fejle) (kaster fejl; )

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

));

Som du ser, har vi en tendens til at importere “fs” modulet til vores program. Det giver os mulighed for enhver funktion, der er knyttet til den, som "readFile".

Kræver kan kigge efter filer inden for følgende rækkefølge:

Indbyggede kerne-Node.js-moduler (som fs)

Moduler i mappen node_moduler.

Hvis modulnavnet indeholder en ./, / eller ../, vil det kigge efter kataloget inden for den givne sti. Det matcher udvidelserne: * .js, * .json og * .node.

Kræv funktioner:

  • Du vil have dynamisk indlæsning, uanset hvor det indlæste modulnavn ikke er foruddefineret / statisk, eller hvor du ikke absolut indlæser et modul, forudsat at det er "virkelig krævet" (afhængigt af bundet kodestrøm).
  • Indlæsning er synkron. Betydning, hvis du har flere kræver, bliver de indlæst og behandlet en efter en.
  • Du vil have dynamisk indlæsning, uanset hvor det indlæste modulnavn ikke er foruddefineret / statisk, eller hvor du ikke absolut indlæser et modul, forudsat at det er "virkelig krævet" (afhængigt af bundet kodestrøm).
  • Indlæsning er synkron. Betydning, hvis du har flere kræver, bliver de indlæst og behandlet en efter en.
  • Kravet baseres normalt ikke mest. Det er yderst usandsynligt, at det i øjeblikket er almindeligt, at ES6-moduler findes.

Den faktiske indlæsning af ethvert modul, der bruger kræver (), sker i fem trin.

Løsning

Indlæser

Indpakning

Evaluering

Caching

Den første trinopløsning er et lukket trin, uanset hvor node.js beregner filmetoderne osv. Inden for det andet, der indlæses, noden trækker koden inden for den aktuelle metode. Ved indpakning indpakkes koden inden for operationen som vist højere end så sender den til VM til evaluering så til sidst cacher den.

Så først og fremmest er noden aldrig klar over hvilke symboler et commonJS-modul skal eksportere indtil og medmindre modulet virkelig evalueres. Og dette er ofte den største forskel med ECMAScript-moduler, som et resultat af ESM er leksikalsk, og de eksporterede symboler er derfor bedre kendt, før koden virkelig evalueres.

Hvad er import?

Der er et forslag om import () fungerer for at danne indlejrede importopgørelser. I modsætning til det leksikale importnøgleord behandles import () -operation på tidspunktet eller analysen (mere som kræver). Syntaksen er ligesom følgende.

import (“foo”). derefter ((modul) =>) .fangst ((fejr) =>);

Når tilknyttet ESM-modul er parset, laves der en lukket struktur, der kaldes en modulpost, før det evalueres af VM. Som et resultat kan enhver fejl vedrørende ulempen ved et par af ethvert eksporteret billede give anledning til fejl før analysen.

Brug sager

  • On-demand modulbelastning er muligt.
  • Betinget belastning af moduler er mulig
  • Et løfte som asynkron håndtering.

Importer funktioner:

  • Du bruger navngivne importer til ved udvælgelsesbelastning udelukkende de varer, du gerne vil have. Hvilken gemmer hukommelse?
  • Import er asynkron (og i den aktuelle ES6-modul Loader er det selvfølgelig) og kan muligvis udføre et touch højere.
  • Du bruger navngivne importer til ved udvælgelsesbelastning udelukkende de varer, du gerne vil have. Hvilken gemmer hukommelse?
  • Import er asynkron (og i den aktuelle ES6-modul Loader er det selvfølgelig) og kan muligvis udføre et touch højere.
  • Import ser ikke ud til at være tilgængelig i Node på grund af version 6.
  • Det ville dog være tilgængeligt i fremtidige versioner. Du bruger det i disse dage ved hjælp af transpilere, der ligner Traceur Compiler, Babel eller Rollup.

Sammenligning af hoved til hoved B og mellem Kræver vs import (Infografik)

Nedenfor er de øverste 4 forskelle mellem Kræv vs import

De vigtigste forskelle mellem kræver kontra import

Begge kræver vs import er populære valg på markedet; lad os diskutere nogle af de vigtigste forskelle mellem kræve kontra import:

  • Kræver er mere dynamisk analyse, og import er mere statisk analyse
  • Kræver Kaster fejl ved kørsel og Import kaster fejl under parsning
  • Krævning er ikke -lexikalsk, og import er leksikalsk
  • Kræver at blive, hvor de har lagt filen, og importen sorteres til toppen af ​​filen.
  • Import køres altid helt i begyndelsen af ​​filen og kan ikke køres betinget. På den anden side kræver kan bruges inline, betinget,

Kræv vs import-sammenligningstabel

Som du kan se, er der mange sammenligninger mellem Kræv vs Import. Lad os se på den øverste sammenligning mellem Kræv vs import nedenfor

S. Nej.KræveImportere
1Syntaks:

var dep = kræver (“dep”);

console.log (dep.bar);

dep.foo ();

Syntaks:

import (foo, bar) fra “dep”;

console.log (bar);

foo ();

2Da import forbliver i trin tre og ikke håndhæves af browsere indfødt, er vi ikke i stand til at køre nogen ydelse og se på.Når du har brugt import i din kode, er dine transpilere for øjeblikket det nødvendigt, det almindelige JS-modelleringssystem. Derfor er de i dag de samme.
3Selvom der ikke er nogen præstationsgevinst i øjeblikket, vil jeg dog stadig rådgive om at bruge import over kræver, fordi det er ved at være hjemmehørende i JS og vil (lige som et resultat af dets oprindelige) prestere højere end krævet.Som et resultat af import er oprindelig derfor kræver ikke udfører højere som sammenlignet med import
4Du vil have dynamisk indlæsning, uanset hvor det indlæste modulnavn ikke er defineret. Indlæsning er synkron. Betydning, hvis du har flere kræver, bliver de indlæst og behandlet en efter en. ES6Du kan bruge navngivne importer til kun ved at indlæse de varer, du gerne vil have. Hvilken gemmer hukommelse? Import er asynkron (og i den aktuelle ES6-modul Loader er det selvfølgelig) og kan muligvis udføre et touch højere. Det krævede modulsystem er normalt ikke almindeligvis baseret. Det er yderst usandsynligt, at det i øjeblikket er almindeligt, at ES6-moduler findes.

Konklusion - Kræv vs import

Vi lærte om en måde at fremstille Node.js-moduler på og bruge dem i vores kode. Moduler tillader os at bruge koden ganske enkelt. De leverer praktisk, der er isoleret fra alternative moduler. En kode er mindre kompliceret at administrere, når den først er i små bidstykker. Dette er ofte tankegangen bag at holde funktioner til en enkelt opgave, eller hvis filer kun indeholder nogle eller en del ad gangen. Hvis du har en fancy app og burde rulle gennem masser af eller tusinder af kodelinjer, bliver opgaven med fejlsøgning eller blot at forstå appen så rigeligere.

Heldigvis hjælper JavaScript os med dette ved at have import kontra kræv. Du skriver dog kode i en fil og deler den kode, derfor kan den bruges af en anden fil eller filer. Jeg håber, at du nu skal have fået en mere retfærdig idé om både import og kræv. Hold øje med vores blog for flere artikler som disse.

Anbefalet artikel

Dette har været en guide til de største forskelle mellem Kræv vs Import. Her diskuterer vi også Nøgleforskelle påkrævet vs import med infografik og sammenligningstabel. Du kan også se på de følgende artikler for at lære mere -

  1. Node.js vs PHP-ydeevne
  2. Raspberry Pi 3 vs Arduino
  3. C # Array vs Liste
  4. C ++ vs mål C
  5. C ++ Vector vs Array: Hvad man foretrækker
  6. C ++ vs Visual C ++: Hvilket er bedst

Kategori: