Відмінності "Потрібно від імпорту"

Модулі є ключовою конструкцією для знання 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', (помилка, дані) => (

if (err) (кинути помилку; )

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

));

Як бачите, у нас є тенденція до імпорту модуля "fs" в нашу програму. Це дозволяє нам будь-яку функцію, пов’язану з нею, наприклад "readFile".

Файли вимагають оглянути файли у такому порядку:

Вбудовані основні модулі Node.js (наприклад, fs)

Модулі в папці node_modules.

Якщо ім'я модуля містить ./, / або ../, воно буде шукати каталог у межах заданого шляху. Він відповідає розширенням: * .js, * .json та * .node.

Потрібні функції:

  • Ви матимете динамічне завантаження там, де ім'я завантаженого модуля не визначене / статичне, або там, де ви абсолютно не завантажуєте модуль, забезпечуючи його "справді необхідне" (залежно від потоку обмеженого коду).
  • Завантаження синхронне. Це означає, що якщо у вас кілька запитів, вони завантажуються та обробляються по черзі.
  • Ви матимете динамічне завантаження там, де ім'я завантаженого модуля не визначене / статичне, або там, де ви абсолютно не завантажуєте модуль, забезпечуючи його "справді необхідне" (залежно від потоку обмеженого коду).
  • Завантаження синхронне. Це означає, що якщо у вас кілька запитів, вони завантажуються та обробляються по черзі.
  • Ця вимога, як правило, не ґрунтується. В даний час навряд чи стане звичним те, що існують модулі ES6.

Фактичне завантаження будь-якого модуля за допомогою вимагає () відбувається в п’ять кроків.

Дозвіл

Завантаження

Загортання

Оцінка

Кешування

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

Отже, перш за все вузол ніколи не знає про те, які символи переходить на експорт до модуля commonJS і якщо модуль справді не оцінений. І це найчастіше найбільше розрізнення з модулями ECMAScript, оскільки результат ESM є лексичним, тому експортовані символи краще відомі до того, як код буде справді оцінений.

Що таке імпорт?

Існує пропозиція import () діяти також для формування вкладених заяв про імпорт. На відміну від лексичного ключового слова імпорту операція import () обробляється під час чи аналіз (більше, як вимагають). Синтаксис такий, як наступний.

import ("foo"). тоді ((модуль) =>) .catch ((помилка) =>);

Коли модуль асоційованого ESM розбирається, перед тим, як його оцінюватиме VM, робиться вкладена структура, що називається записом модуля. Як результат, будь-яка помилка щодо незручності пари будь-якого експортованого зображення може призвести до помилок перед аналізом.

Використовуйте випадки

  • Завантаження модуля на замовлення можливо.
  • Умовне навантаження модулів припустимо
  • Обіцянка на кшталт асинхронного поводження.

Особливості імпорту:

  • Ви будете використовувати імпортований імпорт, вибираючи завантаження виключно предметів, які ви хочете. Що збереже пам’ять?
  • Імпорт асинхронний (і в поточному завантажувачі модулів ES6, звичайно, є) і може мати сенсор вище.
  • Ви будете використовувати імпортований імпорт, вибираючи завантаження виключно предметів, які ви хочете. Що збереже пам’ять?
  • Імпорт асинхронний (і в поточному завантажувачі модулів ES6, звичайно, є) і може мати сенсор вище.
  • Імпорт, здається, не можна отримати в Node через версію 6.
  • Однак він буде доступний у майбутніх версіях. Ви будете використовувати його сьогодні, використовуючи транспілери, схожі на Traceur Compiler, Babel або Rollup.

Порівнювання «голова до голови» між співвідношенням між вимогою та імпортом (інфографіка)

Нижче наведено чотири найкращі відмінності між «Потрібно проти імпорту»

Основні відмінності між "Потрібно проти імпорту"

Обидва Потрібно - Імпорт - популярний вибір на ринку; давайте обговоримо деякі основні відмінності між "Потрібно проти імпорту":

  • Вимагають більше динамічного аналізу, а імпорт - більше статичного аналізу
  • Потрібна помилка кидків під час виконання та імпорт кидає помилку під час розбору
  • Потрібно - нелексичне, а імпорт - лексичний
  • Потрібно залишитися там, де вони помістили файл, а імпорт відсортовано вгорі файлу.
  • Імпорт завжди виконується на самому початку файлу і не може бути виконаний умовно. З іншого боку, вимагати можна використовувати вбудований, умовно,

Потрібна таблиця порівняння з імпортом

Як бачимо, існує багато порівнянь між Require vs Import. Давайте розглянемо верхнє Порівняння між Потрібним та Імпортним нижче

С. Ні.ВимагаютьІмпорт
1Синтаксис:

var dep = вимагати ("dep");

console.log (dep.bar);

dep.foo ();

Синтаксис:

імпорт (foo, bar) з “dep”;

console.log (бар);

foo ();

2Оскільки імпорт залишається на третій стадії і не застосовується веб-переглядачами, ми не можемо запустити жодну ефективність.Сьогодні, коли ви використовуєте імпорт у вашому коді, ваші транспілятори потребують назад, систему моделювання commonJS. Тому на сьогоднішній день кожен той самий.
3Хоча на даний момент прибутку від продуктивності немає, однак я все-таки раджу використовувати імпорт над потребою, оскільки він повинен бути рідним в JS, і він буде (як результат свого рідного) виконувати більше, ніж потрібно.Як результат, імпорт є власним, тому вимагати не виконувати більше, ніж порівняно з імпортом
4У вас буде динамічне завантаження, де б ім'я завантаженого модуля не було визначено заздалегідь. Завантаження синхронне. Це означає, що якщо у вас кілька запитів, вони завантажуються та обробляються по черзі. ES6Ви можете використовувати імпортований імпорт, вибравши завантаження виключно предметів, які ви хочете. Що збереже пам’ять? Імпорт асинхронний (і в поточному завантажувачі модулів ES6, звичайно, є) і може мати сенсор вище. Крім того, система вимагає модулів, як правило, не заснована в основному. В даний час навряд чи стане звичним те, що існують модулі ES6.

Висновок - Потрібно проти імпорту

Ми дізналися про спосіб виготовлення модулів Node.js та використання їх у нашому коді. Модулі дозволяють нам просто використовувати код. Вони забезпечують практичність, ізольовану від альтернативних модулів. Код є менш складним для управління, коли він знаходиться в маленьких шматочках розміру. Це часто є думкою, що стоїть за функціями збереження лише однієї задачі або наявності файлів, що містять лише частину або одну частину за один раз. Якщо у вас є фантазійне додаток і вам слід прокручувати багато чи тисячі рядків коду, тоді завдання налагодження або просто зрозуміти додаток стає набагато складніше.

На щастя, JavaScript допомагає нам у цьому, маючи Import vs Require. Однак ви будете писати код в один файл і ділитися цим кодом, тому він може бути використаний іншим файлом або файлами. Я сподіваюся, що зараз ви, мабуть, мали більш справедливе уявлення як про Import vs Require. Слідкуйте за нашим блогом для таких статей.

Рекомендована стаття

Це було керівництвом щодо найрізноманітніших відмінностей між "Потрібно проти імпорту". Тут ми також обговорюємо ключові відмінності «Потрібно проти імпорту» за допомогою інфографіки та таблиці порівняння. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Node.js проти продуктивності PHP
  2. Raspberry Pi 3 проти Arduino
  3. C # масив проти списку
  4. C ++ проти об'єктиву C
  5. C ++ Vector vs Array: Що віддати перевагу
  6. C ++ проти Visual C ++: що найкраще