Razlike med zahtevo in uvozom

Moduli so ključni konstrukt za poznavanje JavaScript. Zajemali bomo module JavaScript: zahtevajte in uvozite v tem članku Zahtevaj proti uvozu.

Ti moduli omogočajo pisno kodo za večkratno uporabo. Z uporabo upravitelja paketov vozlišč (NPM) boste svoj modul objavili v skupnosti. NPM vam omogoča tudi uporabo modulov, ki so jih ustvarili alternativni razvijalci.

V JavaScriptu je izbran 2 modulski sistem:

Uvoz modulov z uporabo zahteve in komercializem z uporabo modula. Izvoz in izvoz. Foo

Uvoz modulov z uvozom ES6 in komercializem z izvozom ES6.

Ali obstajajo robovi uspešnosti uporabe enega nad drugim? Ali je ostalo vse, kar moramo vedno prepoznati, če imamo nagnjenost k uporabi modulov ES6 preko enot Node? Poskusimo rešiti to težavo.

Kaj je Zahtevaj?

Zahtevajo, da so navajeni porabiti module. Omogoča vam, da v svoje programe vključite module. Sprejeli boste notranje jedrne module Node.js, module v skupnosti (module vozlišč) in naravne module.

Recimo, da bi želeli skenirati datoteko iz datotečnega sistema. Vozlišče vsebuje jedrni modul, imenovan "fs":

const fs = zahtevati ('fs');

fs.readFile ('./ file.txt', 'utf-8', (napaka, podatki) => (

if (napaka) (baciti napako; )

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

));

Kot boste videli, imamo tendenco uvoza modula „fs“ v naš program. Omogoča nam katero koli funkcijo, ki je nanjo povezana, kot je »readFile«.

Zahteve si lahko ogledate za datoteke v naslednjem vrstnem redu:

Vgrajeni jedrni moduli Node.js (kot je fs)

Moduli v mapi node_modules.

Če ime modula vsebuje ./, / ali ../, si bo ogledalo imenik na dani poti. Ujema se s končnicami: * .js, * .json in * .node.

Zahtevaj funkcije:

  • Dinamično nalaganje boste imeli tam, kjer ime naloženega modula ni vnaprej določeno / statično, ali kjerkoli modula ne naložite popolnoma pod pogojem, da je "resnično potrebno" (odvisno od pretoka vezane kode).
  • Nalaganje je sinhrono. Če imate več potreb, se naložijo in obdelujejo eno za drugo.
  • Dinamično nalaganje boste imeli tam, kjer ime naloženega modula ni vnaprej določeno / statično, ali kjerkoli modula ne naložite popolnoma pod pogojem, da je "resnično potrebno" (odvisno od pretoka vezane kode).
  • Nalaganje je sinhrono. Če imate več potreb, se naložijo in obdelujejo eno za drugo.
  • Zahteva večinoma ne temelji. Trenutno zelo malo verjetno postane običaj, da obstajajo moduli ES6.

Dejansko nalaganje katerega koli modula z uporabo zahteve () se zgodi v petih korakih.

Resolucija

nalaganje

Ovijanje

Vrednotenje

Predvajanje

Ločljivost prvega koraka je priložen korak, kadar koli node.js izračuna metode datotek itd. V drugem, ki se nalaga, vozlišče povleče kodo v trenutni metodi. Pri zavijanju v zavite kode znotraj operacije, kot je prikazano višje, kot ga pošlje VM za oceno, tako da ga na koncu predpomni.

Torej, primarno vozlišče se nikoli ne zaveda, za katere simbole gre običajni modul za izvoz, razen če modul resnično ni ovrednoten. In to je največje razlikovanje pri modulih ECMAScript, saj je ESM leksičen, zato so izvoženi simboli bolj znani, preden je koda resnično ovrednotena.

Kaj je uvoz?

Obstaja predlog uvoza (), ki deluje preveč, da bi oblikoval ugnezdene izjave o uvozu. V nasprotju z leksikalno ključno besedo uvoz () deluje () deluje ob času ali analiziranju (bolj kot zahteva). Skladnja je takole.

import ("foo"). potem ((modul) =>) .catch ((napaka) =>);

Ko je modul pridruženi ESM razčlenjen, potem preden ga oceni VM, se oblikuje zaprta struktura, imenovana zapis modula. Posledično lahko vsaka napaka v zvezi z neprijetnostjo nekaj izvožene slike povzroči napako pred analizo.

Uporabite primere

  • Obremenitev modula po naročilu je izvedljiva.
  • Pogojna obremenitev modulov je izvedljiva
  • Obljuba, kot je asinhrono ravnanje.

Uvozi funkcije:

  • Uporabili boste imenovani uvoz, tako da boste izbrali nalaganje izključno predmetov, ki jih želite. Kaj bo prihranilo spomin?
  • Uvoz je asinhran (in v trenutnem nakladaču modulov ES6, seveda je) in lahko doseže dotik višje.
  • Uporabili boste imenovani uvoz, tako da boste izbrali nalaganje izključno predmetov, ki jih želite. Kaj bo prihranilo spomin?
  • Uvoz je asinhran (in v trenutnem nakladaču modulov ES6, seveda je) in lahko doseže dotik višje.
  • Zdi se, da uvoza ni mogoče dobiti v vozlišču zaradi različice 6.
  • Vendar bo na voljo v prihodnjih različicah. Uporabili ga boste danes in uporabljali transpilerje, podobne Traceur Compilerju, Babelu ali zvitku.

Navodila za primerjavo B med razmerjem Zahtevaj in Uvoz (Infographics)

Spodaj so zgornje 4 razlike med Zahtevaj proti uvozu

Ključne razlike med zahtevo in uvozom

Oba Zahtevaj vs Uvoz sta priljubljeni izbiri na trgu; pogovorimo se o nekaterih glavnih razlikah med Zahtevaj in Uvoz:

  • Zahtevaj bolj dinamično analizo, uvoz pa bolj statično analizo
  • Zahtevaj napako meče med izvajanjem in Uvozi napako metanja med razčlenjevanjem
  • Zahtevaj je neleksičen, uvoz pa je leksičen
  • Zahteva, da so tam, kjer so postavili datoteko in uvozili, razvrščeni na vrh datoteke.
  • Uvoz se vedno izvaja na samem začetku datoteke in ga ni mogoče zagnati pogojno. Po drugi strani se zahteva lahko uporablja inline, pogojno,

Zahtevaj primerjalno tabelo proti uvozu

Kot lahko vidite, obstaja veliko primerjav med Zahtevaj proti uvozu. Poglejmo zgornjo Primerjavo med Zahtevaj proti uvozu spodaj

S. Št.ZahtevajUvoz
1Sintaksa:

var dep = zahtevati ("dep");

console.log (dep.bar);

dep.foo ();

Sintaksa:

import (foo, bar) iz “dep”;

console.log (bar);

foo ();

2Ker je uvoz še vedno v tretji fazi in ga brskalniki ne uveljavljajo domače, ne moremo zagnati nobene uspešnosti.Trenutno uporabljate uvoz v kodi, svoje transpilerje, ki jih potrebujete nazaj, sistem za modeliranje commonJS. Zato je za danes vsak enak.
3Čeprav trenutno ni nobenega dobička od uspešnosti, pa vseeno priporočam, da uporabim uvoz nad zahtevami, ker bo kmalu domač v JS-u in bo (tako kot domači) deloval višje od potrebnega.Zaradi uvoza je domače, zato zahteva, da v primerjavi z uvozom ne opravi višje
4Dinamično nalaganje boste imeli tam, kjer ime naloženega modula ni vnaprej določeno. Nalaganje je sinhrono. Če imate več potreb, se naložijo in obdelujejo eno za drugo. ES6Uporabite lahko imenovani uvoz, tako da izberete nalaganje izključno predmetov, ki jih želite. Kaj bo prihranilo spomin? Uvoz je asinhran (in v trenutnem nakladaču modulov ES6, seveda je) in lahko doseže dotik višje. Tudi sistem zahteva modul večinoma ne temelji. Trenutno zelo malo verjetno postane običaj, da obstajajo moduli ES6.

Zaključek - Zahtevaj proti uvozu

Spoznali smo način izdelave modulov Node.js in ga uporabili v naši kodi. Moduli nam omogočajo preprosto uporabo kode. Ponujajo praktičnost, ki je izolirana od alternativnih modulov. Koda je manj zapletena za upravljanje, ko je v majhnih koščkih velikosti. To je pogosto razmišljanje, ki temelji na zadrževanju funkcij samo ene naloge ali če datoteke vsebujejo samo del ali en del hkrati. Če imate domišljijsko aplikacijo in bi se morali pomakniti skozi veliko ali tisoč vrstic kode, postane naloga odpravljanja napak ali preprosto razumevanje aplikacije toliko močnejša.

Na srečo nam JavaScript pomaga pri tem, da uvozimo vs zahtevam. Vendar boste kodo zapisali v eno datoteko in jo podelili v skupno rabo, zato jo lahko uporabi druga datoteka ali datoteke. Upam, da morate zdaj imeti pravičnejšo predstavo o uvozu in zahtevi. Za več takšnih člankov spremljajte naš blog.

Priporočeni članek

To je vodilo za glavne razlike med Zahtevaj proti uvozu. Tukaj razpravljamo tudi o ključnih razlikah med Zahtevaj in Uvoz z infografiko in primerjalno tabelo. Za več informacij si lahko ogledate tudi naslednje članke -

  1. Node.js proti zmogljivosti PHP
  2. Raspberry Pi 3 proti Arduino
  3. C # Array proti seznamu
  4. C ++ proti cilju C
  5. C ++ Vector vs Array: Kaj naj raje
  6. C ++ proti Visual C ++: Kateri je najboljši