Erinevused nõudmise ja impordi vahel

Moodulid on JavaScripti tundmise võtmekonstruktsioon. Katame JavaScripti mooduleid: nõuame ja impordime selle artikli Nõude vs importimise ajal.

Need moodulid võimaldavad teil korduvkasutatava koodi kirja panna. Node Package Manager (NPM) abil avaldate oma mooduli kogukonnas. Samuti lubab NPM kasutada alternatiivsete arendajate loodud mooduleid.

Seal on 2 moodulisüsteemi, mille valite JavaScriptis:

Moodulite importimine nõudmise abil ja kommertsialtuse kasutamine mooduli abil. Eksport ja eksport. Foo

Moodulite importimine ES6-impordi abil ja kommertsiaalsus ES6-eksporti kasutades.

Kas ühe kasutamisel teise ees on eeliseid? Kas on ka ülejäänud, mida peame alati mõistma, kui meil on kalduvus kasutada ES6-mooduleid üle Node-moodulite? Proovime selle probleemi lahendada.

Mis on nõuda?

Nõuda on harjunud mooduleid tarbima. See võimaldab teil moodulid oma programmidesse lisada. Saate omaks olemuselt tuummoodulid Node.js, kogukondlikud moodulid (sõlme moodulid) ja looduslikud moodulid.

Oletame, et tahaksime faili failisüsteemist skannida. Sõlm sisaldab tuummoodulit, mida nimetatakse fs:

const fs = nõuda ('fs');

fs.readFile ('./ file.txt', 'utf-8', (eksinud, andmed) => (

if (eksima) (viskama viga; )

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

));

Nagu näete, on meil kalduvus importida oma programmi moodul „fs“. See võimaldab meil kasutada kõiki sellega seotud funktsioone, näiteks „readFile”.

Nõuda, et saaksite failide ringi vaadata järgmises järjekorras:

Sisseehitatud Node.js tuummoodulid (näiteks fs)

Moodulid kaustas node_modules.

Kui mooduli nimi sisaldab ./, / või ../, otsib see antud tee kataloogis asuvat kataloogi. See sobib laienditega: * .js, * .json ja * .node.

Nõua funktsioone:

  • Teil on dünaamiline laadimine kõikjal, kus laaditud mooduli nimi pole eelnevalt määratletud / staatiline või kus te ei laadita moodulit tingimata, kui see on „tõesti vajalik” (sõltuvalt seotud koodivoolust).
  • Laadimine toimub sünkroonselt. Tähendab, kui teil on mitu nõudmist, laaditakse ja töödeldakse neid ükshaaval.
  • Teil on dünaamiline laadimine kõikjal, kus laaditud mooduli nimi pole eelnevalt määratletud / staatiline või kus te ei laadita moodulit tingimata, kui see on „tõesti vajalik” (sõltuvalt seotud koodivoolust).
  • Laadimine toimub sünkroonselt. Tähendab, kui teil on mitu nõudmist, laaditakse ja töödeldakse neid ükshaaval.
  • See nõue ei põhine enamasti tavapäraselt. ES6 moodulite eksisteerimine on praegu ebatõenäoline.

Mis tahes mooduli tegelik laadimine, kasutades nõudmist (), toimub viie sammuna.

Resolutsioon

Laadimine

Mähkimine

Hindamine

Puhverdamine

Esimese sammu eraldusvõime on suletud samm, kus node.js arvutab laadimisjärgus oleva faili meetodid jne., Tõmbab sõlm koodi praeguse meetodi piires. Pakkimisel mähitakse kood operatsioonisiseselt ülespoole näidatud viisil, saates selle VM-ile hindamiseks, nii et see lõpuks vahemällu salvestab.

Niisiis, peamiselt pole sõlme kunagi teadlik sellest, milliseid sümboleid commonJS-i moodul ekspordib ja kuni moodulit ei hinnata. Ja see on sageli kõige suurem erinevus ECMAScripti moodulitega, kuna ESM on leksikaalne ja seega on eksporditud sümbolid paremini teada enne koodi tõelist hindamist.

Mis on import?

On ettepanek importida () toimima ka pesastatud impordi avalduste moodustamiseks. Vastupidiselt leksikaalsele impordi märksõnale töödeldakse import () toimingut analüüsi või analüüsi ajal (rohkem nagu nõutakse). Süntaks on täpselt järgmine.

import (“foo”). siis ((moodul) =>) .catch ((eksinud) =>);

Kui sidus ESM-moodul on parsitud, tehakse enne selle VM-i poolt hindamist suletud struktuur, millele viidatakse moodulirekordina. Selle tagajärjel võib mõni eksportitud pildi ebamugavusi põhjustav viga enne analüüsi tekitada viga.

Kasutage juhtumeid

  • Tellitava mooduli laadimine on teostatav.
  • Moodulite tingimuslik koormus on teostatav
  • Lubadus nagu asünkroonne käsitsemine.

Funktsioonide importimine:

  • Kasutate nimega impordi jaoks, laadides valikuga ainult soovitud üksusi. Milline säästab mälu?
  • Import on asünkroonne (ja praeguses ES6 moodullaaduris see muidugi on) ja võib toimuda pisut kõrgemal.
  • Kasutate nimega impordi jaoks, laadides valikuga ainult soovitud üksusi. Milline säästab mälu?
  • Import on asünkroonne (ja praeguses ES6 moodullaaduris see muidugi on) ja võib toimuda pisut kõrgemal.
  • Tundub, et 6. versiooni tõttu pole importimist sõlmes saadaval.
  • Siiski oleks see tulevastes versioonides saadaval. Kasutate seda tänapäeval, kasutades Traceur Compiler, Babel või Rollup sarnaseid siirdajaid.

Pea ja pea võrdlus B nõude ja impordi vahel (infograafika)

Allpool on toodud 4 peamist erinevust Nõuda vs impordi vahel

Peamised erinevused nõudmise ja impordi vahel

Mõlemad nõua vs impordi on turul populaarsed valikud; arutame mõnda peamist erinevust nõudmise ja impordi vahel:

  • Nõue on pigem dünaamiline analüüs ja import on rohkem staatiline analüüs
  • Nõua viskab tõrget käitustasemel ja Import viskab parsimise ajal tõrke
  • Nõue on mitteleksiline ja import on leksikaalne
  • Nõuded peavad olema seal, kus nad faili on pannud, ja import sorteeritakse faili ülaossa.
  • Importimist juhitakse alati faili alguses ja seda ei saa tinglikult käitada. Teisest küljest võib nõuda, et seda saaks kasutada tingimusel,

Nõuda vs impordi võrdlustabel

Nagu näete, on nõude ja impordi võrdlusi palju. Vaatame allpool ülemist Võrdluse ja impordi võrdlust

S. EiNõudaImport
1Süntaks:

var dep = nõuda (“dep”);

console.log (dep.bar);

dep.foo ();

Süntaks:

import (foo, bar) riigist “dep”;

console.log (riba);

foo ();

2Kuna import jääb kolmandasse etappi ja brauserid seda ise ei jõusta, ei saa me ühtegi toimivust juhtida.Praegu, kui olete oma koodis impordi kasutanud, edastab ta selle uuesti CommonJSi modelleerimissüsteemi nõudmiseks. Seetõttu on tänapäeval kõik ühesugused.
3Ehkki hetkel pole tulemuslikkuse kasumit, soovitaksin siiski kasutada impordi ülenõude kasutamist, kuna see on JS-is juba pärismaalane ja toimib (just oma emakeelena) nõutavast suuremat.Kuna impordi tulemus on omamaine, ei vaja see nõude täitmist näiteks impordiga võrreldes kõrgemat
4Teil on dünaamiline laadimine kõikjal, kus laaditud mooduli nimi pole eelnevalt määratletud. Laadimine toimub sünkroonselt. Tähendab, kui teil on mitu nõudmist, laaditakse ja töödeldakse neid ükshaaval. ES6Saate kasutada nimega impordi jaoks, laadides valikuga ainult soovitud üksusi. Milline säästab mälu? Import on asünkroonne (ja praeguses ES6 moodullaaduris see muidugi on) ja võib toimuda pisut kõrgemal. Samuti ei põhine tavaliselt nõutavate moodulite süsteem enamasti. ES6 moodulite eksisteerimine on praegu ebatõenäoline.

Järeldus - nõuda vs importida

Õppisime moodust, kuidas toota Node.js mooduleid ja kasutada seda oma koodis. Moodulid võimaldavad meil koodi lihtsalt kasutada. Nad pakuvad praktilisust, mis on alternatiivsetest moodulitest isoleeritud. Koodi on vähem keeruline hallata, kui see on väikestes, hammustussuuruses tükkides. Sageli mõtleb see funktsioonide hoidmine ühe ülesande hoidmisel või siis, kui failid sisaldavad korraga ainult mõnda või ühte osa. Kui teil on väljamõeldud rakendus ja peaksite sirvima palju või tuhandeid koodiridasid, siis on rakenduse silumise või lihtsalt mõistmise ülesanne seda rikkalikumaks muuta.

Õnneks aitab JavaScripti meil sellest välja tulla, kui meil on Import vs Nõuda. Kirjutate koodi siiski ühte faili ja jagate seda koodi, seetõttu saab seda kasutada teises failis või failides. Loodan, et nüüd peate saama õiglasema idee mõlemast impordi ja nõude kohta. Olge kursis meie ajaveebiga, et saada rohkem selliseid artikleid.

Soovitatav artikkel

See on juhend peamiste erinevuste vahel Nõude vs impordi vahel. Siin arutatakse ka peamisi erinevusi infograafikaga võrreldes ja importimisel ning võrdlustabelit. Võite lisateabe saamiseks vaadata ka järgmisi artikleid -

  1. Node.js vs PHP jõudlus
  2. Vaarika Pi 3 vs Arduino
  3. C # massiiv vs nimekiri
  4. C ++ vs eesmärk C
  5. C ++ vektor vs massiiv: mida eelistada
  6. C ++ vs Visual C ++: kumb on parim

Kategooria: