Különbségek a szükséges és az importálás között

A modulok kulcsfontosságú konstrukciók a JavaScript ismeretéhez. Fedezzük fel a JavaScripti modulokat: megköveteljük és importáljuk a Követelés és importálás cikk alatt.

Ezek a modulok lehetővé teszik az újrafelhasználható kód írását. A Node Package Manager (NPM) használatával közzéteszi a modult a közösségben. Az NPM emellett lehetővé teszi az alternatív fejlesztők által létrehozott modulok felhasználását.

Van 2 modulrendszer, amelyet a JavaScripten választhat ki:

A modulok importálása megköveteli, és a kereskedelmezés modul használatával. Export és export. foo

Modulok importálása az ES6 importálásával, és a kereskedelmezés az ES6 exportálásával.

Van-e olyan teljesítmény-él, amelyben az egyiket használhatják a másikkal szemben? Van-e a többi, amit mindig fel kell ismernünk, ha hajlamosak vagyunk az ES6-modulokat a Node-modulok fölé használni? Próbáljuk megoldani ezt a problémát.

Mi az a követelmény?

Szüksége van szokni fogyasztani modulokat. Ez lehetővé teszi a modulok beépítését a programjaiba. Magában foglalja a Node.js alapvető moduljait, a közösségi alapú modulokat (csomópontmodulokat) és a natív modulokat.

Tegyük fel, hogy szeretnénk beolvasni egy fájlt a fájlrendszerből. A csomópont tartalmaz egy alapmodult, amelyet fs-nek hívnak:

const fs = igényelni ('fs');

fs.readFile ('./ file.txt', 'utf-8', (hibás, adatok) => (

if (err) (dobj hibát; )

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

));

Mint láthatja, hajlamos az „fs” modul importálása a programba. Ez lehetővé teszi számunkra a hozzá kapcsolódó bármely funkció, például a „readFile” használatát.

A Require megnézheti a fájlokat a következő sorrendben:

Beépített mag Node.js modulok (mint az fs)

Modulok a node_modules mappában.

Ha a modul neve tartalmaz egy ./, / vagy ../ fájlt, akkor az adott útvonalon keresi a könyvtárat. Egyezik a * .js, * .json és * .node kiterjesztésekkel.

Szükséges szolgáltatások:

  • Dinamikus betöltés lesz akkor, ha a betöltött modul neve nincs előre megadva / statikus, vagy ha nem tölt be feltétlenül egy modult, feltéve, hogy „valóban szükséges” (a kötött kódfolyamtól függően).
  • A betöltés szinkron. Azaz ha több igény is van, akkor ezeket egyenként tölti be és dolgozza fel.
  • Dinamikus betöltés lesz akkor, ha a betöltött modul neve nincs előre megadva / statikus, vagy ha nem tölt be feltétlenül egy modult, feltéve, hogy „valóban szükséges” (a kötött kódfolyamtól függően).
  • A betöltés szinkron. Azaz ha több igény is van, akkor ezeket egyenként tölti be és dolgozza fel.
  • A követelmény általában nem szokásosan alapul. Rendkívül valószínűtlen, hogy szokásossá váljanak az ES6 modulok létezése.

Bármely modul tényleges betöltése az igénylés () használatával öt lépésben történik.

Felbontás

Betöltés

Csomagolás

Értékelés

gyorsítótárral

Az első lépésfelbontás egy zárt lépés, ahol a node.js kiszámítja a fájlmódszereket stb. A betöltés második szakaszában, a csomópont a kódot az aktuális módszerben húzza. A csomagolásba becsomagolja a kódot a mûvelet során, amint azt magasabb ábrán látja el, és elküldi azt a virtuális géphez, hogy kiértékelje, így végül elraktározza.

Tehát elsősorban a csomópont soha nem tudja, hogy milyen szimbólumokat használ a commonJS modul az exportálásig, és csak akkor, ha a modult valóban kiértékelik. És ez gyakran a legnagyobb különbség az ECMAScript modulokkal, mivel az ESM eredményeként lexikus, tehát az exportált szimbólumok jobban ismertek, mielőtt a kódot valóban kiértékelnék.

Mi az importálás?

Van egy javaslat az import () működéséről is, hogy beágyazott importálási nyilatkozatokat hozzon létre. A lexikai importkulcsszóval ellentétben az import () művelet az elemzéskor (vagy inkább a szükségesnél) feldolgozásra kerül. A szintaxis pontosan az alábbi.

importálás („foo”), majd ((modul) =>) .catch ((hibás) =>);

Ha a társított ESM modult elemzi, akkor mielőtt azt a virtuális gép kiértékelné, létrejön egy zárt szerkezet, amelyet modulrekordnak hívnak. Ennek eredményeként bármely, az exportált kép párjának kellemetlenségeivel kapcsolatos hiba hibát okozhat az elemzés előtt.

Használjon tokot

  • Igény szerint modul betölthető.
  • A modulok feltételes terhelése végrehajtható
  • Olyan ígéret, mint az aszinkron kezelés.

Importálási szolgáltatások:

  • Az elnevezett importáláshoz csak a kívánt tételeket töltheti be. Melyik takarít meg memóriát?
  • Az import aszinkron (és a jelenlegi ES6 modulos betöltőben természetesen ez is), és magasabb szintű teljesítményt tud végrehajtani.
  • Az elnevezett importáláshoz csak a kívánt tételeket töltheti be. Melyik takarít meg memóriát?
  • Az import aszinkron (és a jelenlegi ES6 modulos betöltőben természetesen ez is), és magasabb szintű teljesítményt tud végrehajtani.
  • Az import nem tűnik elérhetőnek a Node-ban a 6. verzió miatt.
  • Ez azonban a jövőben is elérhető lesz. Ma manapság a Traceur Compiler, a Babel vagy az Összegző eszközhöz hasonló transzplantátorokat használ.

Head-to-Head összehasonlítás a B igénylés és importálás között (Infographics)

Az alábbiakban a 4 legfontosabb különbség van a Követelmény és az Importálás között

Főbb különbségek a szükséges és az importálás között

Mind a Követelés, mind az Importálás a piacon népszerű választás; vitassuk meg néhány fontos különbséget a Követelmény és Importálás között:

  • A követelmény inkább a dinamikus elemzés, az import inkább a statikus elemzés
  • Szükséges a Throws hiba futtatásakor, és az Import hibát okoz az elemzés során
  • A követelmény nem rugalmas, az import pedig a Lexikus
  • Ha a fájlt elhelyezi, ott kell maradnia, és az importálás a fájl tetejére lesz rendezve.
  • Az importálás mindig a fájl elején fut, és nem futtatható feltételesen. Másrészt viszont a igény felhasználható inline, feltételesen,

Követelmény vs Import összehasonlító táblázat

Mint láthatja, sok összehasonlítás van a Követelmény és az Importálás között. Nézzük meg az alábbiakban a Felső összehasonlítás a Követelmény és az Importálás között

S. Nemkívánimport
1Szintaxis:

var dep = igényelni (“dep”);

console.log (dep.bar);

dep.foo ();

Szintaxis:

(foo, bar) importálása a „dep” -ból;

console.log (bar);

ize ();

2Mivel az import továbbra is a harmadik szakaszban van, és a böngészők ezt nem hajtják végre natív módon, nem tudjuk végrehajtani semmilyen teljesítményt.Jelenleg, amikor az importot használja a kódban, az újraülteti azt, hogy megkövetelje a commonJS modellező rendszert. Ezért manapság mindegyik azonos.
3Bár jelenleg nem érhető el teljesítménynyereség, továbbra is azt tanácsolom, hogy az import over követelést használjanak, mert hamarosan natív lesz a JS-ben, és (csak a natív eredménye miatt) jobban teljesítenek, mint amennyire szükség van.Mivel az import natív, ezért a követelmény nem teljesít magasabbra, mint az importálás
4Dinamikus betöltés lesz akkor, ha a betöltött modul neve nincs előre megadva. A betöltés szinkron. Azaz ha több igény is van, akkor ezeket egyenként tölti be és dolgozza fel. ES6Használhatja az elnevezett importálást, ha kiválasztja, hogy csak azokat a tételeket töltse be, amelyeket szeretne. Melyik takarít meg memóriát? Az import aszinkron (és a jelenlegi ES6 modulos betöltőben természetesen ez is), és magasabb szintű teljesítményt tud végrehajtani. Ezenkívül a szükséges modul rendszer általában nem szokásosan alapul. Rendkívül valószínűtlen, hogy szokásossá váljanak az ES6 modulok létezése.

Következtetés - Követelmény vs Importálás

Megtanultuk a Node.js modulok előállításának és a kódban való alkalmazásának módját. A modulok lehetővé teszik a kód egyszerű használatát. Olyan praktikusságot nyújtanak, amely el van különítve az alternatív moduloktól. A kód kezelése kevésbé bonyolult, ha kicsi, harapós méretű darabokban van. Ez gyakran azon a gondolkodásmódon alapszik, amely szerint a funkciókat csak egy feladatnál tartják, vagy ha a fájlok egyszerre csak néhányat vagy egyet tartalmaznak. Ha van egy divatos alkalmazásod, és sok vagy több ezer soron át kell gördítenie, akkor az alkalmazás hibakeresésének vagy egyszerű megértésének a feladata bonyolultabbá válik.

Szerencsére a JavaScript segít bennünket abban, hogy Import és Igényel. Kódot azonban egy fájlba ír, és megosztja azt, tehát egy másik fájlban vagy fájlokban felhasználhatja. Remélem, most már igazságosabb elképzeléssel kell rendelkeznie mind az Importálás, mind a Követelés szempontjából. Kísérje figyelemmel a blogunkat további hasonló cikkekkel kapcsolatban.

Ajánlott cikk

Ez útmutatóként szolgál a legfontosabb különbségekhez a Követelmény és az Importálás között. Itt is tárgyaljuk a Követelmény vs Importálás legfontosabb különbségeit az infographics és az összehasonlító táblázat segítségével. Lehet, hogy megnézi a következő cikkeket is, ha többet szeretne megtudni -

  1. Node.js vs PHP Performance
  2. Málna Pi 3 vs Arduino
  3. C # tömb vs lista
  4. C ++ vs C cél
  5. C ++ vektor vs tömb: Mire vágyunk?
  6. C ++ vs Visual C ++: melyik a legjobb

Kategória: