Razlike između zahtjeva između uvoza i uvoza

Moduli su ključna konstrukcija za poznavanje JavaScripta. Pokrivat ćemo JavaScript module: zahtijevaju i uvoze tijekom ovog članka Zahtijevaj uvezu.

Ovi moduli omogućuju vam pisanje koda za višekratnu upotrebu. Upotrebom Node Package Manager-a (NPM) objavit ćete svoj modul zajednici. Također, NPM vam omogućuje korištenje modula kreiranih od strane alternativnih programera.

U JavaScript-u postoji dva modulna sustava:

Uvoz modula pomoću zahtjeva, a komercijalizam pomoću modula. Izvoz i izvoz. foo

Uvoz modula pomoću ES6 uvoza i komercijalizam pomoću ES6 izvoza.

Postoje li koristi izvedbe jedne preko druge? Postoji li ostalo što uvijek moramo prepoznati imamo li tendenciju korištenja ES6 modula preko onih čvorova? Pokušajmo riješiti ovaj problem.

Što je zahtjev?

Zahtjevi su navikli konzumirati module. Omogućuje vam uključivanje modula u svoje programe. Prigrlit ćete intrinzično jezgre Node.js module, module utemeljene u zajednici (node ​​module) i native module.

Recimo da bismo željeli skenirati datoteku iz datotečnog sustava. Čvor sadrži jezgreni modul koji se naziva "fs":

const fs = tražiti ('fs');

fs.readFile ('./ file.txt', 'utf-8', (pogreška, podaci) => (

if (err) (baciti grešku; )

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

));

Kao što ćete vidjeti, imamo tendenciju uvoza „fs“ modula u naš program. Omogućuje nam bilo koju funkciju vezanu uz nju, poput "readFile".

Zahtjev možete pregledati datoteke u sljedećem redoslijedu:

Ugrađeni jezgrani Node.js moduli (poput fs)

Moduli u mapi node_modules.

Ako naziv modula sadrži ./, / ili ../, potražit će mapu unutar datog puta. Odgovara ekstenzijama: * .js, * .json i * .node.

Zahtijeva značajke:

  • Imat ćete dinamično učitavanje gdje god učitani naziv modula nije unaprijed definiran / statičan ili gdje god apsolutno ne učitate modul pod uvjetom da je „zaista potreban“ (ovisno o ograničenom protoku koda).
  • Učitavanje je sinkrono. Znači ako imate više zahtjeva, oni se učitavaju i obrađuju jedan po jedan.
  • Imat ćete dinamično učitavanje gdje god učitani naziv modula nije unaprijed definiran / statičan ili gdje god apsolutno ne učitate modul pod uvjetom da je „zaista potreban“ (ovisno o ograničenom protoku koda).
  • Učitavanje je sinkrono. Znači ako imate više zahtjeva, oni se učitavaju i obrađuju jedan po jedan.
  • Ovaj zahtjev se uglavnom ne temelji. Trenutno je vrlo malo vjerojatno da će postati postojeći ES6 moduli.

Stvarno učitavanje bilo kojeg modula pomoću zahtijeva () događa se u pet koraka.

rezolucija

Učitavam

pakiranje

procjena

caching

Rezolucija prvog koraka je priloženi korak gdje god node.js izračuna datoteke datoteke itd. Unutar drugog koji se učitava, čvor povlači kod unutar trenutne metode. Pri pakiranju u zamotavanje kôd unutar operacije kao što je prikazano više od toga šalje ga VM-u na procjenu pa ga na kraju predmemorira.

Dakle, primarno čvor nikad nije svjestan koji simboli zajednički JS modul izvozi do i ako se modul zaista ne procijeni. A ovo je često najveće razlikovanje s ECMAScript modulima, jer je rezultat ESM-a leksičan i na taj način, izvezeni simboli su poznatiji prije nego što se kôd zaista procijeni.

Što je uvoz?

Postoji prijedlog import () djeluju previše za formiranje ugniježđenih izjava o uvozu. Za razliku od leksičke ključne riječi import, import () operira se obrađuje u vrijeme ili analiza (više poput zahtijeva). Sintaksa je poput sljedeće.

import ("foo"). zatim ((modul) =>) .catch ((err) =>);

Kad je pridruženi ESM modul raščlanjen, prije nego što ga VM procjeni, napravi se zatvorena struktura koja se naziva modulski zapis. Kao rezultat, svaka greška koja se odnosi na neugodnosti nekoliko eksportiranih slika može stvoriti grešku prije analize.

Koristite slučajeve

  • Opterećenje modula na zahtjev je izvedivo.
  • Uvjetno je opterećenje modula
  • Obećanje poput asinkronog rukovanja.

Značajke uvoza:

  • Upotrijebit ćete imenovani uvoz za odabir izborom samo predmeta koje želite. Što će uštedjeti memoriju?
  • Uvoz je asinkran (i u trenutnom ES6 utovarivaču modula, naravno) i može imati viši dodir.
  • Upotrijebit ćete imenovani uvoz za odabir izborom samo predmeta koje želite. Što će uštedjeti memoriju?
  • Uvoz je asinkran (i u trenutnom ES6 utovarivaču modula, naravno) i može imati viši dodir.
  • Čini se da uvoz nije moguće dobiti u Nodeu zbog verzije 6.
  • No dostupan bi u budućim verzijama. Upotrijebit ćete ih ovih dana koristeći transpilere slične Traceur Compiler, Babel ili Rollup.

Usporedba B između uspostavljanja Require i Import (Infographics)

Ispod su 4 glavne razlike između zahtjeva - uvoz i uvoz

Ključne razlike između zahtjeva između uvoza i uvoza

Oba Zahtijeva vs Uvoz su popularni izbori na tržištu; neka nam govori o nekim glavnim razlikama između zahtjeva između uvoza i uvoza:

  • Zahtijeva više dinamičke analize, a uvoz više statičke analize
  • Zahtijeva pogrešku u bacanju tijekom izvođenja i Uvoz pogrešaka prilikom raščlanjivanja
  • Require is nonlexical, a uvoz je leksički
  • Zahtijeva da ostanu tamo gdje su stavili datoteku, a uvoz se sortira na vrh datoteke.
  • Uvoz se uvijek izvodi na samom početku datoteke i ne može se uvjetno izvoditi. S druge strane, zahtijeva se može koristiti inline, uvjetno,

Zahtijeva usporedbu sa tablicom uvoza

Kao što vidite, postoji mnogo usporedbi između Require vs Import. Pogledajmo gornju Usporedbu između zahtjeva - uvoz u nastavku

S. No.zahtijevatiUvoz
1Sintaksa:

var dep = tražiti ("dep");

console.log (dep.bar);

dep.foo ();

Sintaksa:

import (foo, bar) iz "dep";

console.log (bar);

foo ();

2Budući da uvoz ostaje u trećoj fazi i preglednici ga ne primjenjuju izvorno, nismo u mogućnosti pokrenuti nijednu izvedbu.Trenutno kada koristite uvoz u vašem kodu, transpilere natrag koji zahtijevaju, commonJS sustav modeliranja. Stoga je u današnje vrijeme svaki isti.
3Iako trenutno nema zarade od performansi, ipak ću savjetovati korištenje uvoza preko zahtjeva jer će uskoro biti izvorni u JS-u i učinit će (samo kao svoj izvorni izvornik) bolji nego što je potrebno.Kao rezultat uvoza izvorni je, stoga, ne zahtijeva više u odnosu na uvoz
4Imat ćete dinamično učitavanje, gdje god naziv učitanog modula nije unaprijed definiran. Učitavanje je sinkrono. Znači ako imate više zahtjeva, oni se učitavaju i obrađuju jedan po jedan. ES6Možete koristiti imenovani uvoz za odabir izborom samo predmeta koje želite. Što će uštedjeti memoriju? Uvoz je asinkran (i u trenutnom ES6 utovarivaču modula, naravno) i može imati viši dodir. Također, sustav modula zahtijeva uglavnom se obično ne temelji. Trenutno je vrlo malo vjerojatno da će postati postojeći ES6 moduli.

Zaključak - Zahtijevajte vs Uvoz

Saznali smo o načinu izrade modula Node.js i korištenju ga u našem kodu. Moduli nam omogućuju jednostavno korištenje koda. Pružaju praktičnost koja je izolirana od alternativnih modula. Kôdom je manje komplicirano upravljati nakon što je u malim komadima veličine. To je često razmišljanje o zadržavanju funkcija na samo jednom zadatku ili ako datoteke sadrže samo neki, ili jedan, pojedinačni dio. Ako imate fantastičnu aplikaciju i trebali biste se kretati kroz mnoštvo ili tisuće redaka koda, zadatak uklanjanja pogrešaka ili jednostavno razumijevanje aplikacije postaje toliko obilniji.

Srećom JavaScript nam pomaže u tome što imamo Uvoz vs Zahtijeva. Međutim, kôd ćete napisati u jednu datoteku i podijeliti ga s kôdom, pa ga može zaposliti druga datoteka ili datoteke. Nadam se da sada sigurno imate pošteniju predodžbu o uvozu i zahtjevanju. Pratite naš blog za više ovih članaka.

Preporučeni članak

Ovo je vodič za najveće razlike između zahtjeva za uvozom i uvozom. Ovdje također raspravljamo o ključnim razlikama Zahtijevaj uvezu s infografikom i tablici usporedbe. Možete također pogledati sljedeće članke da biste saznali više -

  1. Node.js vs PHP performanse
  2. Raspberry Pi 3 vs Arduino
  3. C # niz prema popisu
  4. C ++ i cilj C
  5. C ++ Vector vs Array: Što više voljeti
  6. C ++ i Visual C ++: što je najbolje

Kategorija: