Eroa vaatimuksen ja tuonnin välillä

Moduulit ovat avainrakenne JavaScriptin tuntemiseen. Käsittelemme JavaScript-moduuleja: vaadimme ja tuomme tämän Vaadita vs. -artikkelin aikana.

Nämä moduulit sallivat sinun kirjoittaa uudelleenkäytettävän koodin kirjallisesti. Node Package Manager (NPM) -sovelluksella voit julkaista moduulin yhteisölle. Lisäksi NPM sallii sinun käyttää vaihtoehtoisten kehittäjien luomia moduuleja.

JavaScript-tilassa valitset 2 moduulijärjestelmää:

Moduulien tuonti vaatii ja kaupallisuus moduulin avulla. Vienti ja vienti. foo

Moduulien tuonti ES6-tuonnilla ja kaupallisuus ES6-vientiä käyttämällä.

Onko suorituskyvyn reunoja käytettäessä toisiaan yli? Onko olemassa muuta, joka meidän on aina tunnistettava, jos meillä on taipumus käyttää ES6-moduuleja Solmu-moduulien yli? Yritetään ratkaista tämä ongelma.

Mikä on vaatimus?

Vaaditaan ovat tottuneet kuluttamaan moduuleja. Sen avulla voit sisällyttää moduuleja ohjelmiin. Hyväksyt luonnollisesti ydin Node.js-moduulit, yhteisöpohjaiset moduulit (solmumoduulit) ja alkuperäiset moduulit.

Oletetaan, että haluaisimme skannata tiedoston tiedostojärjestelmästä. Solmu sisältää ydinmoduulin, johon viitataan nimellä 'fs':

const fs = vaadi ('fs');

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

if (virhe) (heitä virhe; )

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

));

Kuten huomaat, meillä on taipumus tuoda “fs” -moduuli ohjelmaan. Se antaa meille minkä tahansa siihen liitetyn toiminnon, kuten ”readFile”.

Require voi etsiä tiedostoja seuraavassa järjestyksessä:

Sisäänrakennetut ydin Node.js-moduulit (kuten fs)

Moduulit node_modules-kansiossa.

Jos moduulin nimi sisältää ./, / tai ../, se etsii hakemiston tietyn polun sisällä. Se vastaa laajennuksia: * .js, * .json ja * .node.

Vaadi ominaisuudet:

  • Sinulla on dynaaminen lataus missä tahansa ladatun moduulin nimi ei ole ennalta määritetty / staattinen tai missä et lataa ehdottomasti moduulia edellyttäen, että se on todella tarpeen (riippuen sidotusta koodivirrasta).
  • Lataus on synkronista. Tarkoittaa, jos sinulla on useita vaatimuksia, ne ladataan ja käsitellään yksi kerrallaan.
  • Sinulla on dynaaminen lataus missä tahansa ladatun moduulin nimi ei ole ennalta määritetty / staattinen tai missä et lataa ehdottomasti moduulia edellyttäen, että se on todella tarpeen (riippuen sidotusta koodivirrasta).
  • Lataus on synkronista. Tarkoittaa, jos sinulla on useita vaatimuksia, ne ladataan ja käsitellään yksi kerrallaan.
  • Vaatimus ei yleensä perustu tavanomaisesti. On erittäin epätodennäköistä, että siitä tulee tavanomaista, että ES6-moduulit ovat olemassa.

Minkä tahansa moduulin tosiasiallinen lataus vaatimuksen () avulla tapahtuu viidessä vaiheessa.

päätöslauselma

Ladataan

kääreeseen

arviointi

välimuistia

Ensimmäisen askeleen resoluutio on suljettu vaihe, missä node.js laskee tiedostomenetelmät jne. Ladattavassa toisessa, solmu vetää koodin nykyisen menetelmän sisällä. Käärettäessä kiertää koodin operaation sisällä suurempana kuin näytetään, lähettää sen VM: lle arviointia varten, jotta se lopulta välimuistiin tallentaa.

Joten ensisijaisesti solmu ei ole koskaan tietoinen siitä, mitä symboleja commonJS-moduuli vie vientiin asti ja ellei moduulia todella arvioida. Ja tämä on usein suurin ero ECMAScript-moduuleilla, koska ESM on lexical ja siten viedyt symbolit tunnetaan paremmin ennen kuin koodi todella arvioidaan.

Mikä on tuonti?

On ehdotus, että import () toimivat myös sisäkkäisten tuontilausuntojen muodostamiseksi. Toisin kuin leksikaalinen tuonti-avainsana, import () -operaatio prosessoidaan tuolloin tai analyysissä (enemmän kuin vaaditaan). Syntaksi on aivan kuten seuraava.

Tuo (“foo”). sitten ((moduuli) =>) .catch ((virhe) =>);

Kun assosioitunut ESM-moduuli on jäsentätty, ennen kuin VM arvioi sen, tehdään suljettu rakenne, johon viitataan moduulitietueena. Seurauksena mikä tahansa virhe, joka liittyy muutaman minkä tahansa viedyn kuvan haitoihin, voi aiheuttaa virheitä ennen analyysiä.

Käytä koteloita

  • Tarvittavan moduulin lataus on mahdollista.
  • Ehdollinen moduulikuormitus voidaan suorittaa
  • Lupaus kuten asynkroninen käsittely.

Tuo ominaisuuksia:

  • Käytät nimettyä tuontia valitsemalla vain haluamasi tuotteet. Mikä säästää muistia?
  • Tuonti on asynkronista (ja nykyisessä ES6 Module Loader -sovelluksessa se tietysti on) ja saattaa suorittaa kosketuksen korkeammalle.
  • Käytät nimettyä tuontia valitsemalla vain haluamasi tuotteet. Mikä säästää muistia?
  • Tuonti on asynkronista (ja nykyisessä ES6 Module Loader -sovelluksessa se tietysti on) ja saattaa suorittaa kosketuksen korkeammalle.
  • Tuontia ei näytä olevan saatavissa solmusta version 6 vuoksi.
  • Se on kuitenkin saatavana tulevina versioina. Käytät sitä nykyään, käyttämällä Traceur Compiler-, Babel- tai Rollup-kaltaisia ​​siirrottimia.

Head to Head -vertailu B vaatimusvaatimus vs. tuonti (infografia)

Alla on 4 suurinta eroa Vaadita vs. Tuo-välillä

Tärkeimmät erot vaatimuksen ja tuonnin välillä

Molemmat Vaaditaan vs. Tuonti ovat suosittuja valintoja markkinoilla; keskustelemme joistain tärkeimmistä eroista vaatimuksen ja tuonnin välillä:

  • Vaatimus on enemmän dynaamista analyysiä ja tuonti on enemmän staattista analyysiä
  • Vaadi heittää virhe suorituksen aikana ja Tuo heittää virheen jäsennettäessä
  • Vaatimus on nonlexical ja Import on Lexical
  • Vaatii pysymään missä he ovat laittaneet tiedoston, ja tuonti lajitellaan tiedoston yläosaan.
  • Tuonti suoritetaan aina tiedoston alussa, eikä sitä voida suorittaa ehdollisesti. Toisaalta vaatia voidaan käyttää sisäisesti, ehdollisesti,

Vaadi vs. tuontivertailutaulukko

Kuten huomaat, on paljon vertailua Vaatimus vs. Tuonti välillä. Katsotaanpa alla olevaa ylävertailua Vaatimukset vs. tuonti

S. ei.VaatiaTuonti
1Syntaksi :

var dep = vaadi (“dep”);

console.log (dep.bar);

dep.foo ();

Syntaksi :

tuo (foo, bar) "dep": sta;

console.log (bar);

foo ();

2Koska tuonti on edelleen kolmannessa vaiheessa, eikä selaimet ole pakottaneet sitä tekemään alkuperäisestä, emme pysty suorittamaan suorituskykyä.Tällä hetkellä, kun käytät tuontia koodissa, siirrät sen takaisin vaatimaan, commonJS-mallinnusjärjestelmää. Siksi nykyään kukin on sama.
3Vaikka suorituskykytavoitteita ei ole tällä hetkellä, suosittelen silti, että tuonti ylittää vaatimuksen, koska se on JS: n kotoisin ja tulee (vain alkuperäiskunnan vuoksi) suorittamaan enemmän kuin vaaditaan.Tuonnin tuloksena on syntyperäinen, joten vaatimus ei toimi paremmin kuin tuontia verrattuna
4Sinulla on dynaaminen lataus missä tahansa ladatun moduulin nimeä ei ole ennalta määritetty. Lataus on synkronista. Tarkoittaa, jos sinulla on useita vaatimuksia, ne ladataan ja käsitellään yksi kerrallaan. ES6Voit käyttää nimettyjä tuontia valitsemalla ladata vain haluamasi tuotteet. Mikä säästää muistia? Tuonti on asynkronista (ja nykyisessä ES6 Module Loader -sovelluksessa se tietysti on) ja saattaa suorittaa kosketuksen korkeammalle. Myöskään vaadittava moduulijärjestelmä ei yleensä perustu tavanomaisesti. On erittäin epätodennäköistä, että siitä tulee tavanomaista, että ES6-moduulit ovat olemassa.

Johtopäätös - Vaaditaan vs. tuonti

Opimme tapaa tuottaa Node.js-moduuleja ja käyttää niitä koodissamme. Moduulit antavat meille mahdollisuuden käyttää koodia yksinkertaisesti. Ne tarjoavat käytännöllisyyden, joka on eristetty vaihtoehtoisista moduuleista. Koodin hallinta on vähemmän monimutkaista, kun se on pienissä, puremiskokoisissa paloissa. Tämä on ajattelu, jonka takia funktiot pidetään vain yhdessä tehtävässä tai tiedostoilla on vain yksi tai yksi osa kerrallaan. Jos sinulla on hieno sovellus ja sinun tulee selata paljon tai tuhansia koodirivejä, sovelluksen virheenkorjauksen tai yksinkertaisen ymmärtämisen tehtävä on niin runsas, kova.

Onneksi JavaScripti auttaa meitä ulos tässä tekemällä Import vs Require -ominaisuuden. Voit kuitenkin kirjoittaa koodin yhteen tiedostoon ja jakaa sen, joten sitä voidaan käyttää toisessa tiedostossa tai tiedostoissa. Toivon nyt, että sinulla on oltava oikeudenmukaisempi käsitys molemmista tuonnista ja vaatimuksista. Pysy ajan tasalla blogiimme saadaksesi lisää tällaisia ​​artikkeleita.

Suositeltava artikkeli

Tämä on ollut opas tärkeimpiin eroihin Vaatimukset vs. Tuo -toimintojen välillä. Tässä keskustellaan myös Vaatimukset vs. Tuo-avaineroista infografioiden ja vertailutaulukon kanssa. Saatat myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. Node.js vs. PHP Performance
  2. Vadelma Pi 3 vs. Arduino
  3. C # taulukko vs. luettelo
  4. C ++ vs. tavoite C
  5. C ++ Vector vs Array: Mikä on parempi
  6. C ++ vs Visual C ++: Mikä on paras