Skillnader mellan kräver och import

Moduler är en nyckelkonstruktion för att känna till JavaScript. Vi täcker JavaScript-moduler: kräva och importera under den här artikeln Kräv vs import.

Med dessa moduler kan du skriva en återanvändbar kod. Genom att använda Node Package Manager (NPM) publicerar du din modul till gemenskapen. Dessutom tillåter NPM att du använder moduler skapade av alternativa utvecklare.

Det finns två modulsystem som du väljer i JavaScript:

Importera moduler med användning kräver och kommersialism med hjälp av en modul. Export och export. foo

Importera moduler med ES6-import och kommersialism med ES6-export.

Finns det några prestanda kanter att använda en över den andra? Finns det resten som vi alltid måste känna igen om vi har en tendens att använda ES6-moduler över Node-moduler? Låt oss försöka lösa detta problem.

Vad krävs?

Kräver är vana att konsumera moduler. Det tillåter dig att integrera moduler i dina program. Du kommer att omfamna grundläggande Node.js-moduler, community-baserade moduler (nodmoduler) och inbyggda moduler.

Låt oss säga att vi vill skanna en fil från filsystemet. Noden innehåller en kärnmodul som kallas 'fs':

const fs = kräva ('fs');

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

if (fel) (kasta fel; )

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

));

Som ni ser har vi en tendens att importera "fs" -modulen till vårt program. Det tillåter oss att alla funktioner som är kopplade till den, som "readFile".

Begär kan leta efter filer inom följande ordning:

Inbyggda kärnmoduler för Node.js (som fs)

Moduler i mappen node_moduler.

Om modulnamnet innehåller en ./, / eller ../ kommer den att leta efter katalogen inom den givna sökvägen. Det matchar tillägg: * .js, * .json och * .node.

Kräv funktioner:

  • Du kommer att ha dynamisk laddning varhelst det laddade modulnamnet inte är fördefinierat / statiskt, eller var du än inte läser in en modul förutsatt att det är "verkligen nödvändigt" (beroende på bundet kodflöde).
  • Laddningen är synkron. Betydelse om du har flera krav, de laddas och behandlas en efter en.
  • Du kommer att ha dynamisk laddning varhelst det laddade modulnamnet inte är fördefinierat / statiskt, eller var du än inte läser in en modul förutsatt att det är "verkligen nödvändigt" (beroende på bundet kodflöde).
  • Laddningen är synkron. Betydelse om du har flera krav, de laddas och behandlas en efter en.
  • Kravet är vanligtvis inte baserat. Det är oerhört osannolikt att det för närvarande är vanligt att ES6-moduler finns.

Den faktiska laddningen av alla moduler som använder kräver () sker i fem steg.

Upplösning

Läser in

Omslag

Utvärdering

caching

Den första stegupplösningen är ett slutet steg varhelst node.js beräknar filmetoderna etc. inom det andra som laddas, noden drar koden inom den aktuella metoden. Vid inpackning inpackas koden inom operatören som visas högre än så skickar den till VM för utvärdering så att den så småningom cache.

Så är primärt noden aldrig medveten om vilka symboler en commonJS-modul ska exportera till och om inte modulen verkligen utvärderas. Och detta är ofta den största skillnaden med ECMAScript-moduler, som ett resultat av ESM är lexikalt och så är de exporterade symbolerna bättre kända innan koden verkligen utvärderas.

Vad är import?

Det finns ett förslag om import () fungera för att skapa kapslade importmeddelanden. Till skillnad från det lexikala importsökordet bearbetas import () -operationen vid tidpunkten eller analysen (mer som kräver). Syntaxen är precis som följande.

importera ("foo"). sedan ((modul) =>) .catch ((err) =>);

När associerad ESM-modul analyseras, görs en sluten struktur som kallas en modulpost innan den utvärderas av VM. Som ett resultat kan alla fel beträffande besväret hos ett par av alla exporterade bilder ge upphov till fel innan analysen.

Använd fall

  • Modulbelastning på begäran är möjlig.
  • Villkorlig belastning av moduler är möjlig
  • Ett löfte som asynkron hantering.

Importera funktioner:

  • Du kommer att använda namngivna import till genom att välja laddning bara de artiklar du vill ha. Vilket sparar minne?
  • Importen är asynkron (och i nuvarande ES6-modulläsare är det naturligtvis) och kan göra en touch högre.
  • Du kommer att använda namngivna import till genom att välja laddning bara de artiklar du vill ha. Vilket sparar minne?
  • Importen är asynkron (och i nuvarande ES6-modulläsare är det naturligtvis) och kan göra en touch högre.
  • Import verkar inte kunna erhållas i Node på grund av version 6.
  • Men det skulle finnas tillgängligt i framtida versioner. Du kommer att använda det idag och använda transpilatorer som liknar Traceur Compiler, Babel eller Rollup.

Jämförelse mellan head-to-head B etween kräver vs import (Infographics)

Nedan visas de 4 bästa skillnaderna mellan Kräv kontra import

Viktiga skillnader mellan kräva kontra import

Båda kräver vs import är populära val på marknaden; låt oss diskutera några av de stora skillnaderna mellan kräva kontra import:

  • Kräva är mer dynamisk analys och import är mer statisk analys
  • Kräv kastar fel vid körning och import kastar fel vid analys
  • Kräver är icke -lexikal och import är Lexical
  • Kräver att stanna där de har lagt filen och importen sorteras till toppen av filen.
  • Import körs alltid i början av filen och kan inte köras på villkor. Å andra sidan kräver kan användas inline, villkorligt,

Kräv jämfört med importjämförelsetabell

Som du ser finns det många jämförelser mellan Kräv kontra import. Låt oss titta på den översta jämförelsen mellan Kräv kontra import nedan

S. Nej.FordraImportera
1Syntax:

var dep = kräva (“dep”);

console.log (dep.bar);

dep.foo ();

Syntax:

importera (foo, bar) från “dep”;

console.log (bar);

foo ();

2Eftersom importen förblir i steg tre och inte upprätthålls av webbläsare naturligtvis, kan vi inte se några resultat på en titt.När du har importerat i din kod, transporterar det för närvarande igen det vanliga systemet JJ. Därför är de nuförtiden samma.
3Även om det inte finns några resultat för närvarande, men jag kommer fortfarande råd att använda import över kräver eftersom det är på väg att vara infödda i JS och kommer (precis som ett resultat av dess ursprung) att prestera högre än kräver.Som ett resultat av att importen är ursprunglig kräver därför inte högre resultat jämfört med import
4Du kommer att ha dynamisk lastning varhelst det laddade modulnamnet inte är fördefinierat. Laddningen är synkron. Betydelse om du har flera krav, de laddas och behandlas en efter en. ES6Du kan använda namngivna import till genom att välja laddning bara de objekt du vill ha. Vilket sparar minne? Importen är asynkron (och i nuvarande ES6-modulläsare är det naturligtvis) och kan göra en touch högre. Dessutom är det modulsystem som krävs inte vanligtvis baserat. Det är oerhört osannolikt att det för närvarande är vanligt att ES6-moduler finns.

Slutsats - Kräv kontra import

Vi lärde oss om ett sätt att producera Node.js-moduler och använda dem i vår kod. Moduler tillåter oss att använda koden helt enkelt. De tillhandahåller praktiska funktioner som isoleras från alternativa moduler. En kod är mindre komplicerad att hantera när den är i små bitar med små bitar. Detta är ofta tanken bakom att hålla funktioner till bara en uppgift eller att filer bara innehåller en del, eller en, åt gången. Om du har en snygg app och borde bläddra igenom massor av eller tusentals kodrader, blir uppgiften att felsöka eller helt enkelt förstå appen så mycket tuffare.

Lyckligtvis hjälper JavaScript oss med detta genom att ha import kontra kräva. Du skriver emellertid kod i en fil och delar den koden, därför kan den användas av en annan fil eller filer. Jag hoppas att nu måste du ha fått en rättvisare uppfattning om både Import och Kräv. Håll dig uppdaterad på vår blogg för fler artiklar som dessa.

Rekommenderad artikel

Detta har varit en guide till de största skillnaderna mellan Kräv kontra import. Här diskuterar vi också de viktigaste skillnaderna Require vs Import med infografik och jämförelsetabell. Du kan också titta på följande artiklar för att lära dig mer -

  1. Node.js vs PHP-prestanda
  2. Raspberry Pi 3 vs Arduino
  3. C # Array vs List
  4. C ++ vs mål C
  5. C ++ Vector vs Array: Vad man ska föredra
  6. C ++ vs Visual C ++: Vilket är bäst

Kategori: