Rozdíly mezi požadavkem a importem

Moduly jsou klíčovým konstruktem pro poznání JavaScriptu. V tomto článku Vyžadovat a importovat budeme pokrývat moduly JavaScriptu: vyžadovat a importovat.

Tyto moduly umožňují vkládat opakovaně použitelný kód. Pomocí Správce balíků uzlů (NPM) publikujete svůj modul do komunity. NPM vám také umožňuje využívat moduly vytvořené alternativními vývojáři.

V JavaScriptu vyberete 2 modul systému:

Import modulů pomocí vyžaduje a komercializace pomocí modulu. Vývoz a vývoz. Foo

Import modulů pomocí importu ES6 a komercializace pomocí exportu ES6.

Existují nějaké hrany výkonu při používání jednoho nad druhým? Existuje zbytek, který musíme vždy rozpoznat, pokud máme tendenci používat moduly ES6 nad moduly Node? Pokusme se tento problém vyřešit.

Co je to Vyžadovat?

Vyžadují se zvyklé spotřebovávat moduly. Umožňuje vám začlenit moduly do vašich programů. Přijmete vnitřní jádro modulů Node.js, komunitní moduly (moduly uzlů) a nativní moduly.

Řekněme, že bychom chtěli prohledat soubor ze systému souborů. Uzel obsahuje základní modul označovaný jako 'fs':

const fs = vyžadovat ('fs');

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

if (err) (throw err; )

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

));

Jak uvidíte, máme tendenci importovat modul „fs“ do našeho programu. To nám umožňuje jakoukoli funkci s ní spojenou, například „readFile“.

Vyžadovat může vyhledat soubory v následujícím pořadí:

Vestavěné základní moduly Node.js (jako fs)

Moduly ve složce node_modules.

Pokud název modulu obsahuje ./, / nebo ../, bude hledat adresář v dané cestě. Odpovídá rozšíření: * .js, * .json a * .node.

Vyžadovat funkce:

  • Dynamické načítání budete mít všude, kde není načten název modulu předdefinován / statický, nebo kamkoli nenahrajete modul absolutně za předpokladu, že je to „skutečně vyžadováno“ (v závislosti na vázaném toku kódu).
  • Načítání je synchronní. To znamená, že pokud máte více požadavků, jsou načteny a zpracovány jeden po druhém.
  • Dynamické načítání budete mít všude, kde není načten název modulu předdefinován / statický, nebo kamkoli nenahrajete modul absolutně za předpokladu, že je to „skutečně vyžadováno“ (v závislosti na vázaném toku kódu).
  • Načítání je synchronní. To znamená, že pokud máte více požadavků, jsou načteny a zpracovány jeden po druhém.
  • Tento požadavek není obvykle založen většinou. Je velmi nepravděpodobné, že by se v současné době existovalo, že moduly ES6 existují.

Skutečné načítání jakéhokoli modulu pomocí požadavku () se děje v pěti krocích.

Řešení

načítání

Obal

Hodnocení

Ukládání do mezipaměti

Rozlišení prvního kroku je uzavřený krok, kdykoli node.js vypočítává metody souborů atd. V rámci druhého načítání, uzel vytáhne kód v rámci aktuální metody. Při zabalení do zalomení kódu v operaci, jak je ukázáno výše, vyšle jej do VM pro vyhodnocení, takže jej nakonec uloží do mezipaměti.

Primárně tedy uzel nikdy neví, jaké symboly společný modul JS exportuje do a pokud není modul skutečně vyhodnocen. A to je často největší rozdíl s moduly ECMAScript, protože výsledek ESM je lexikální, a proto jsou exportované symboly lépe známy, než je kód skutečně vyhodnocen.

Co je Import?

K dispozici je také návrh na import (), který slouží k vytvoření vnořených příkazů pro import. Na rozdíl od lexikálního klíčového slova importu se operace import () zpracovává v té době nebo v analýze (spíš vyžaduje). Syntaxe je jako následující.

import („foo“)., poté ((modul) =>) .catch ((err) =>);

Když je přidružený modul ESM analyzován, pak před jeho vyhodnocením VM se vytvoří uzavřená struktura označovaná jako záznam modulu. Výsledkem je, že jakákoli chyba týkající se nepohodlí několika exportovaných obrázků může před analýzou způsobit chybu.

Případy užití

  • Zatížení modulu na vyžádání je možné.
  • Podmíněné zatížení modulů je proveditelné
  • Slib jako asynchronní manipulace.

Funkce importu:

  • Pojmenované importy použijete k výběru načíst pouze položky, které chcete. Která ušetří paměť?
  • Import je asynchronní (a v aktuálním modulu ES6 Module Loader to samozřejmě je) a může provést vyšší dotyk.
  • Pojmenované importy použijete k výběru načíst pouze položky, které chcete. Která ušetří paměť?
  • Import je asynchronní (a v aktuálním modulu ES6 Module Loader to samozřejmě je) a může provést vyšší dotyk.
  • Zdá se, že dovozy nelze v uzlu získat kvůli verzi 6.
  • Bude však k dispozici v budoucích verzích. V dnešní době ji budete používat, pomocí transpilátorů podobných jako Traceur Compiler, Babel nebo Rollup.

Srovnání hlava-hlava B mezi požadavkem a importem (infografika)

Níže jsou uvedeny nejdůležitější 4 rozdíly mezi požadavkem a importem

Klíčové rozdíly mezi požadavkem a importem

Vyžadovat vs import jsou populární volby na trhu; pojďme diskutovat o některých hlavních rozdílech mezi požadavkem na dovoz:

  • Vyžadovat je více dynamické analýzy a import je více statické analýzy
  • Vyžadovat chybu vyvolání za běhu a import vyvolá chybu při analýze
  • Vyžadovat je nenulové a import je lexikální
  • Vyžaduje, aby zůstali tam, kde soubor uložili, a import se roztřídí na začátek souboru.
  • Import je vždy spuštěn na samém začátku souboru a nelze jej podmiňovat. Na druhou stranu lze požadavek použít inline, podmíněně,

Vyžadovat vs. srovnávací tabulku importu

Jak vidíte, existuje mnoho srovnání mezi požadavkem a importem. Podívejme se na horní Porovnání mezi Vyžadovat vs Import níže

S. Ne.VyžadovatImport
1Syntaxe:

var dep = vyžadovat („dep“);

console.log (dep.bar);

dep.foo ();

Syntaxe:

importovat (foo, bar) z "dep";

console.log (bar);

foo ();

2Protože import zůstává ve třetí fázi a prohlížeče jej nevynucují nativně, nemůžeme spustit žádný výkon.V současné době, jakmile použijete import v kódu, transpilátory jej znovu vyžadují, modelingový systém commonJS. Proto je v dnešní době každý stejný.
3I když v tuto chvíli nejde o žádný výkonnostní zisk, přesto budu radit, abych použil import nad požadavkem, protože to bude v JS nativní a bude (stejně jako jeho rodný) provádět vyšší výkon, než vyžaduje.V důsledku importu je nativní, proto nevyžadují vyšší výkon ve srovnání s importem
4Dynamické načítání budete mít všude tam, kde není předdefinován název načteného modulu. Načítání je synchronní. To znamená, že pokud máte více požadavků, jsou načteny a zpracovány jeden po druhém. ES6Pojmenované importy můžete použít výběrem načíst pouze položky, které chcete. Která ušetří paměť? Import je asynchronní (a v aktuálním modulu ES6 Module Loader to samozřejmě je) a může provést vyšší dotyk. Modul vyžádat také obvykle není založen většinou. Je velmi nepravděpodobné, že by se v současné době existovalo, že moduly ES6 existují.

Závěr - Vyžadovat vs Import

Dozvěděli jsme se, jak vyrábět moduly Node.js a používat je v našem kódu. Moduly nám umožňují používat kód jednoduše. Poskytují praktičnost, která je izolovaná od alternativních modulů. Správa kódu je méně komplikovaná, jakmile je v malých kouscích. To je často myšlenka udržení funkcí pouze pro jeden úkol nebo mít soubory obsahující pouze část nebo jednu část najednou. Pokud máte fantastickou aplikaci a měli byste procházet mnoho nebo tisíce řádků kódu, úkolem ladění nebo prostého porozumění této aplikaci se stane, že bude hojnější.

Naštěstí nám JavaScript pomáhá s tím, že máme Import vs Vyžadovat. Kód však napíšete do jednoho souboru a sdílíte jej, proto jej lze použít v jiném souboru nebo souborech. Doufám, že nyní musíte mít spravedlivější představu o importu a požadavku. Sledujte na našem blogu další články, jako jsou tyto.

Doporučený článek

Toto bylo vodítko k největším rozdílům mezi Vyžadovat vs. Importovat. Zde také diskutujeme klíčové rozdíly v požadavcích a importech s infografikou a srovnávací tabulkou. Další informace naleznete také v následujících článcích -

  1. Node.js vs. výkon PHP
  2. Raspberry Pi 3 vs Arduino
  3. C # Array vs List
  4. C ++ vs Cíl C
  5. C ++ Vector vs Array: Co dávat přednost
  6. C ++ vs Visual C ++: Což je nejlepší

Kategorie: