Разлики между Изискване срещу Импорт

Модулите са ключова конструкция за познаване на JavaScript. Ще покрием модулите на JavaScript: изисква и импортира по време на тази статия Изискване срещу импортиране.

Тези модули ви позволяват да пишете код за многократна употреба. Използвайки Node Package Manager (NPM), вие ще публикувате своя модул в общността. Също така, NPM ви позволява да използвате модули, създадени от алтернативни разработчици.

Има 2 модулна система, която ще изберете в JavaScript:

Импортиране на модули с помощта на изискване и комерсиализъм с помощта на модул. Износ и износ. Foo

Импортиране на модули, използващи ES6 импортиране, и комерсиализъм, използващ ES6 износ.

Има ли краища на производителността за използване на една над друга? Има ли останалото, което винаги трябва да разпознаваме, ако имаме склонност да използваме ES6 модули над тези от Node? Нека се опитаме да разрешим този проблем.

Какво е Изискване?

Изискват са свикнали да консумират модули. Тя ви позволява да включвате модули във вашите програми. Ще обхващате присъщи модули Node.js, базирани в общността модули (възлови модули) и нативните модули.

Да речем, че бихме искали да сканираме файл от файловата система. Възелът съдържа основен модул, наречен "fs":

const fs = изисквам ('fs');

fs.readFile ('./ file.txt', 'utf-8', (грешка, данни) => (

ако (грешка) (хвърли грешка; )

console.log ('данни:', данни);

));

Както ще видите, ние сме склонни да импортираме модула „fs“ в нашата програма. Позволява ни всяка свързана с него функция, като „readFile“.

Изискване може да се огледа за файлове в следния ред:

Вградени основни модули Node.js (като fs)

Модули в папката node_modules.

Ако името на модула съдържа ./, / или ../, то ще огледа директорията в дадения път. Той съответства на разширенията: * .js, * .json и * .node.

Изисквайте функции:

  • Ще имате динамично зареждане, където името на натоварения модул не е предварително дефинирано / статично или където не зареждате абсолютно модул, при условие че е „наистина необходимо“ (в зависимост от ограничения поток на код).
  • Зареждането е синхронно. Значение, ако имате няколко изисквания, те се зареждат и обработват едно по едно.
  • Ще имате динамично зареждане, където името на натоварения модул не е предварително дефинирано / статично или където не зареждате абсолютно модул, при условие че е „наистина необходимо“ (в зависимост от ограничения поток на код).
  • Зареждането е синхронно. Значение, ако имате няколко изисквания, те се зареждат и обработват едно по едно.
  • Изискването не се основава обикновено. Понастоящем е изключително малко вероятно да стане обичайно, че съществуват ES6 модули.

Реалното зареждане на всеки модул, използващ изискването (), се извършва в пет стъпки.

Резолюция

Зареждане

Опаковане

оценка

кеширане

Резолюцията на първата стъпка е приложена стъпка, където node.js изчислява файловите методи и т.н. във втората, която се зарежда, възелът дърпа кода в рамките на текущия метод. При опаковане в увива кода в рамките на операцията, както е показано по-високо, отколкото го изпраща на VM за оценка, така че в крайна сметка го кешира.

Така че, главно възелът никога не е наясно какви символи един общJS модул отива да експортира до и освен ако модулът не бъде наистина оценен. И това често е най-голямото разграничение с модулите на ECMAScript, в резултат на това ESM е лексикален и така, изнесените символи са по-известни, преди кодът да бъде оценен истински.

Какво е внос?

Има предложение за import () да работи също така, за да формира вложени внос изявления. За разлика от лексикалната ключова дума за импортиране, операцията import () се обработва по време или анализ (повече като изискват). Синтаксисът е точно както следва.

import ("foo"). тогава ((модул) =>) .catch ((грешка) =>);

Когато асоциираният ESM модул е ​​анализиран, тогава преди да бъде оценен от VM, се прави затворена структура, посочена като запис на модул. В резултат на това всяка грешка, свързана с неудобството на няколко експортирани изображения, може да доведе до грешка преди анализа.

Случаи на употреба

  • Натоварването на модула при поискване е възможно.
  • Условното натоварване на модулите е възможно
  • Обещание като асинхронно управление.

Функции за импортиране:

  • Ще използвате импортиран импорт, за да изберете само това, което желаете. Кое ще спести памет?
  • Импортирането е асинхронно (и в сегашния ES6 Модулен товарач, разбира се) и може да изпълни докосване по-високо.
  • Ще използвате импортиран импорт, за да изберете само това, което желаете. Кое ще спести памет?
  • Импортирането е асинхронно (и в сегашния ES6 Модулен товарач, разбира се) и може да изпълни докосване по-високо.
  • Изглежда, че импортирането не може да се получи в Node поради версия 6.
  • Той обаче ще бъде наличен в бъдещи версии. Ще го използвате днес, като използвате транспилатори, подобни на Traceur Compiler, Babel или Rollup.

Сравнение от главата до главата между между Изискване и внос (Инфографика)

По-долу са горните 4 разлики между Изискване срещу Импорт

Ключови разлики между Изискване срещу Импортиране

И двете Изискват срещу Внос са популярни решения на пазара; нека да обсъдим някои от основните разлики между изискване срещу импортиране:

  • Изискването е по-динамичен анализ, а вносът е по-скоро статичен анализ
  • Изисквайте грешка на хвърляния по време на изпълнение и грешка при импортиране при хвърляне
  • Изискване е нелексично и импортирането е лексикално
  • Изисква да остане там, където са сложили файла и импортирането се подрежда в горната част на файла.
  • Импортирането винаги се изпълнява в самото начало на файла и не може да се стартира условно. От друга страна изискването може да се използва реално, условно,

Изисквайте сравнителна таблица срещу внос

Както можете да видите, има много сравнение между Изискване срещу импортиране. Нека да разгледаме горното Сравнение между Изискване срещу Импортиране по-долу

S. No.Изискваневнос
1Синтаксис :

var dep = изисквам („dep“);

console.log (dep.bar);

dep.foo ();

Синтаксис :

import (foo, bar) от “dep”;

console.log (бар);

Foo ();

2Тъй като импортирането остава на третия етап и не се налага от браузърите първоначално, ние не можем да стартираме никаква ефективност.В момента, когато използвате импортиране в кода, вашите транспилатори го изискват обратно, системата за моделиране на commonJS. Следователно за наши дни всеки е един и същ.
3Въпреки че в момента няма печалба от производителност, все пак ще съветвам да използвам импортирането над изискването, тъй като е на път да е местен в JS и ще (само в резултат на родния си) ще се представи по-високо от изискваното.В резултат на импортирането е местно, поради това изискването не се представя по-високо в сравнение с импортирането
4Ще имате динамично зареждане, където името на заредения модул не е предварително дефинирано. Зареждането е синхронно. Значение, ако имате няколко изисквания, те се зареждат и обработват едно по едно. ES6Можете да използвате назован импорт, за да изберете само зареждане, което искате. Кое ще спести памет? Импортирането е асинхронно (и в сегашния ES6 Модулен товарач, разбира се) и може да изпълни докосване по-високо. Също така системата за изискване на модули не се основава обикновено. Понастоящем е изключително малко вероятно да стане обичайно, че съществуват ES6 модули.

Заключение - Изискване срещу импортиране

Научихме за начина на производство на модули Node.js и използването им в нашия код. Модулите ни позволяват да използваме код просто. Те осигуряват практичност, изолирана от алтернативни модули. Кодът е по-малко сложен за управление, след като е на малки парчета с размер на ухапване. Това често е мисленето зад поддържането на функциите само на една задача или файловете съдържат само част или една част наведнъж. Ако имате фантазирано приложение и би трябвало да преминете през много или хиляди редове код, тогава задачата за отстраняване на грешки или просто разбиране на приложението става толкова обилна.

За щастие JavaScript ни помага да постигнем това чрез импортиране срещу изискване. Въпреки това, вие ще напишете код в един файл и ще споделите този код, следователно той може да бъде използван от друг файл или файлове. Надявам се сега трябва да имате по-справедлива представа и за Импорт срещу Изискване. Следете нашия блог за още статии като тези.

Препоръчителен член

Това е ръководство за основните разлики между Изискване срещу Импорт. Тук също обсъждаме ключовите разлики „Изискване срещу импорт“ с инфографиката и таблицата за сравнение. Може да разгледате и следните статии, за да научите повече -

  1. Node.js срещу PHP производителност
  2. Raspberry Pi 3 срещу Arduino
  3. C # масив срещу списък
  4. C ++ срещу цел C
  5. C ++ Vector vs Array: Какво да предпочитам
  6. C ++ срещу Visual C ++: Кое е най-доброто