что такое _interopRequireDefault? - PullRequest
0 голосов
/ 03 июля 2018

Я видел объяснение на этом сайте , которое говорит:

_interopRequireDefault (): модуль ES6 CommonJS используется как есть (если он имеет экспорт по умолчанию, то у него есть свойство с именем default). Нормальный Модуль CommonJS становится значением свойства по умолчанию. В других слова, в последнем случае экспорт модуля становится по умолчанию экспорт.

В кодах часто пишется несколько _interopRequireDefault.

Так что, если я хорошо понимаю, поскольку экспорт по умолчанию - это набор ключей / значений для всего файла, экспортируемого как единое целое, _interopRequireDefault позволяет выбрать, какие модули будут входить в экспорт по умолчанию определенного кода, который он представляет?

1 Ответ

0 голосов
/ 24 августа 2018

Чтобы ваш код мог использовать модули, написанные для nodejs, а также для ES6.

Существует разница между способами экспорта модулей в ES6 и CJS (общая спецификация JS).

Модули в Common JS:

module.exports = function () {};

Модули в ES6:

export default function () {}

_interopRequireDefault имеет довольно простую логику:

function _interopRequireDefault(module) {
  const
      isCJSModule = module && module.__esModule,
      cjsStyedModule = { default: module };

  return isCJSModule ? module: cjsStyedModule;
}

СУП существовал до ES6. Узел по-прежнему использует версию CJS и все модули, изначально написанные для nodejs.

Хотя nodejs теперь экспериментально поддерживает модули ES6, если вы запускаете с - экспериментальный помечает и называет файлы модуля как .mjs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...