Подтвердить что ты не робот

Модули ES6 (EcmaScript 2015): import index.js

Глядя на интернет, я запутался со специальным файлом модуля index.js.

Использование babelJS + nodeJS или Browserify/Webpack Я могу импортировать модуль "index.js" внутри каталога "libs" с помощью import myLib from "./libs" (т.е. опустить часть /index или /index.js).

Является ли разрешение модуля "index.js" (указав содержащую папку), поддерживаемый официальным стандартом модулей ES6 (EcmaScript 2015)? Или это просто "обычное" поведение NodeJS/CommonJS?

Можно ли опустить часть импорта /index | /index.js во всех браузерах (когда модули будут поддерживаться во всех браузерах)?

4b9b3361

Ответ 1

Является ли разрешение модуля "index.js" (указав содержащую папку), поддерживаемый официальным стандартом модулей ES6 (EcmaScript 2015)?

Нет. ES2015 не содержит ничего о загрузчике модуля или о том, как интерпретировать идентификаторы модулей.


Или это просто "обычное" поведение NodeJS/CommonJS transpiling?

Да. Вы можете прочитать алгоритм разрешения модуля в документации . Соответствующая часть:

require(X) from module at path Y
1. If X is a core module,
   a. return the core module
   b. STOP
2. If X begins with './' or '/' or '../'
   a. LOAD_AS_FILE(Y + X)
   b. LOAD_AS_DIRECTORY(Y + X)
3. LOAD_NODE_MODULES(X, dirname(Y))
4. THROW "not found"

[...]

LOAD_AS_DIRECTORY(X)
1. If X/package.json is a file,
   a. Parse X/package.json, and look for "main" field.
   b. let M = X + (json main field)
   c. LOAD_AS_FILE(M)
2. If X/index.js is a file, load X/index.js as JavaScript text.  STOP
3. If X/index.json is a file, parse X/index.json to a JavaScript object. STOP
4. If X/index.node is a file, load X/index.node as binary addon.  STOP

Можно ли опустить часть импорта /index |/index.js во всех браузерах (когда модули будут поддерживаться во всех браузерах)?

Надеемся, что реализация браузера будет нацелена на максимальную совместимость с существующими загрузчиками модулей, но пока мы не знаем. Возможно, это не имеет ничего общего с браузером, но с тем, как сервер разрешает идентификаторы модулей. Я признаюсь, что в последнее время я не следил за развитием, поэтому любые другие идеи очень ценятся:)