Forskjeller mellom krever vs import

Moduler er en nøkkelkonstruksjon for å kjenne JavaScript. Vi vil dekke JavaScript-moduler: krever og importer i løpet av denne artikkelen Krev vs import.

Disse modulene tillater deg å skrive skriftlig gjenbrukbar kode. Ved å bruke Node Package Manager (NPM), vil du publisere modulen din til fellesskapet. I tillegg tillater NPM deg å bruke moduler opprettet av alternative utviklere.

Det er to modulsystem du vil velge i JavaScript:

Import av moduler ved bruk krever og kommersialisme ved bruk av en modul. Eksport og eksport. foo

Importere moduler ved bruk av ES6-import og kommersialisme ved bruk av ES6-eksport.

Er det noen ytelseskanter for å bruke den ene over den andre? Er det resten vi alltid må kjenne igjen hvis vi har en tendens til å bruke ES6-moduler over Node-moduler? La oss prøve å løse dette problemet.

Hva kreves?

Krev er vant til å konsumere moduler. Den lar deg integrere moduler i programmene dine. Du omfavner iboende Node.js-moduler, samfunnsbaserte moduler (nodemoduler) og innfødte moduler.

La oss si at vi ønsker å skanne en fil fra filsystemet. Node inneholder en kjernemodul kalt 'fs':

const fs = krever ('fs');

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

hvis (feil) (kast feil; )

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

));

Som du vil se, har vi en tendens til å importere “fs” -modulen til vårt program. Den lar oss alle funksjoner som er knyttet til den, for eksempel "readFile".

Krev kan se seg om etter filer i følgende rekkefølge:

Innebygde kjerne Node.js-moduler (som fs)

Moduler i mappen node_moduler.

Hvis modulnavnet inneholder en ./, / eller ../, vil den se seg om etter katalogen innenfor den gitte banen. Det samsvarer med utvidelsene: * .js, * .json og * .node.

Krev funksjoner:

  • Du vil ha dynamisk lasting uansett hvor det lastede modulnavnet ikke er forhåndsdefinert / statisk, eller uansett hvor du ikke absolutt laster en modul, forutsatt at den er "virkelig påkrevd" (avhengig av innbundet kodestrøm).
  • Lasting er synkron. Betydning at hvis du har flere krav, blir de lastet inn og behandlet en etter en.
  • Du vil ha dynamisk lasting uansett hvor det lastede modulnavnet ikke er forhåndsdefinert / statisk, eller uansett hvor du ikke absolutt laster en modul, forutsatt at den er "virkelig påkrevd" (avhengig av innbundet kodestrøm).
  • Lasting er synkron. Betydning at hvis du har flere krav, blir de lastet inn og behandlet en etter en.
  • Kravet er vanligvis ikke basert hovedsakelig. Det er ekstremt usannsynlig å bli vanlig for tiden at ES6-moduler eksisterer.

Den faktiske lastingen av en hvilken som helst modul som bruker krever () skjer i fem trinn.

Vedtak

Laster

innpakning

evaluering

caching

Den første trinnoppløsningen er et lukket trinn der node.js beregner filmetodene osv. I løpet av det andre som lastes inn, noden trekker koden innenfor den gjeldende metoden. Når du pakker inn pakker du inn koden i operasjonen som vist høyere enn så sender den til VM for evaluering slik at den til slutt bufrer den.

Så er primært node aldri klar over hvilke symboler en commonJS-modul skal eksportere til og med mindre modulen virkelig blir evaluert. Og dette er ofte det største skillet med ECMAScript-moduler, som et resultat av ESM er leksikalsk, og så er de eksporterte symbolene bedre kjent før koden virkelig blir evaluert.

Hva er import?

Det er et forslag om import () operere for å lage nestede importerklæringer. I motsetning til det leksikalske importnøkkelordet, blir import () opererer behandlet på tidspunktet eller analysen (mer som krever). Syntaksen er akkurat som følgende.

import (“foo”). deretter ((modul) =>) .fangst ((feil) =>);

Når tilknyttet ESM-modul er analysert, lages en lukket struktur kalt en moduloppføring før den evalueres av VM. Som et resultat, kan enhver feil angående ulempen for et par av et eksportert bilde gi en tabbe før analysen.

Bruk tilfeller

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

Importer funksjoner:

  • Du vil bruke navngitte importer til ved å velge last bare de varene du ønsker. Hvilket vil lagre minne?
  • Importen er asynkron (og i gjeldende ES6 Module Loader er den selvfølgelig) og kan gi en berøring høyere.
  • Du vil bruke navngitte importer til ved å velge last bare de varene du ønsker. Hvilket vil lagre minne?
  • Importen er asynkron (og i gjeldende ES6 Module Loader er den selvfølgelig) og kan gi en berøring høyere.
  • Import ser ikke ut til å være oppnåelig i Node på grunn av versjon 6.
  • Imidlertid vil den være tilgjengelig i fremtidige versjoner. Du bruker det i disse dager ved å bruke transpiler som ligner på Traceur Compiler, Babel eller Rollup.

Sammenligning av head to head B etween Krev vs import (Infografikk)

Nedenfor er de fire beste forskjellene mellom Krev vs import

Viktige forskjeller mellom krever vs import

Begge krever vs import er populære valg i markedet; la oss diskutere noen av de viktigste forskjellene mellom krever og import:

  • Krev er mer dynamisk analyse og import er mer av statisk analyse
  • Krev Kaster feil ved kjøretid og Importer kastfeil under parsing
  • Krever er ikke-leksikalsk og import er leksikalsk
  • Krever å være der de har lagt filen og importen blir sortert til toppen av filen.
  • Import kjøres alltid helt i begynnelsen av filen og kan ikke kjøres betinget. På den annen side krever kan brukes inline, betinget,

Krev versus import-sammenligningstabel

Som du ser er det mange sammenligninger mellom Krev kontra import. La oss se på den øverste sammenligningen mellom Krev vs import nedenfor

S. Nei.KrevImportere
1Syntaks:

var dep = krever (“dep”);

console.log (dep.bar);

dep.foo ();

Syntaks:

import (foo, bar) fra “dep”;

console.log (bar);

foo ();

2Ettersom import forblir i trinn tre og ikke blir håndhevet av nettlesere innfødt, kan vi ikke se noen ytelse.Når du først har brukt import i koden, transporterer den det igjen til å kreve, det vanlige JS-modelleringssystemet. Derfor er i dag de samme.
3Selv om det ikke er noen ytelsesgevinst for øyeblikket, vil jeg imidlertid fortsatt anbefale å bruke import over demand fordi det er i ferd med å være hjemmehørende i JS og vil (akkurat som et resultat av dets innfødte) prestere høyere enn det som kreves.Som et resultat av import er innfødt derfor krever ikke utfører høyere enn sammenlignet med import
4Du vil ha dynamisk lasting uansett hvor det lastede modulenavnet ikke er forhåndsdefinert. Lasting er synkron. Betydning at hvis du har flere krav, blir de lastet inn og behandlet en etter en. ES6Du kan bruke navngitte importer til ved å velge last bare de varene du ønsker. Hvilket vil lagre minne? Importen er asynkron (og i gjeldende ES6 Module Loader er den selvfølgelig) og kan gi en berøring høyere. Dessuten er ikke modulsystemet vanligvis basert hovedsakelig. Det er ekstremt usannsynlig å bli vanlig for tiden at ES6-moduler eksisterer.

Konklusjon - Krev vs import

Vi lærte om en måte å produsere Node.js-moduler på og bruke dem i koden vår. Moduler tillater oss å bruke kode ganske enkelt. De gir praktiskhet som er isolert fra alternative moduler. En kode er mindre komplisert å administrere når den er i små biter av små størrelse. Dette er ofte tanken bak å holde funksjoner til bare en oppgave eller å ha filer inneholder bare noen, eller en, om gangen. Hvis du har en fancy app og burde bla gjennom mange eller tusenvis av kodelinjer, blir oppgaven med å feilsøke eller bare forstå appen så rikelig tøffere.

Heldigvis hjelper JavaScript oss med dette ved å ha Import vs Require. Imidlertid skriver du kode i en fil og deler den koden, derfor kan den brukes av en annen fil eller filer. Jeg håper at nå må du ha fått en mer rettferdig ide om både Import vs Krev. Følg med på bloggen vår for flere artikler som disse.

Anbefalt artikkel

Dette har vært en guide til de viktigste forskjellene mellom Krev vs import. Her diskuterer vi også nøkkelforskjellene Krev vs import med infografikk og sammenligningstabell. Du kan også se på følgende artikler for å lære mer -

  1. Node.js vs PHP-ytelse
  2. Raspberry Pi 3 vs Arduino
  3. C # Array vs List
  4. C ++ vs mål C
  5. C ++ Vector vs Array: Hva du foretrekker
  6. C ++ vs Visual C ++: Som er best