Ответ 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 во всех браузерах (когда модули будут поддерживаться во всех браузерах)?
Надеемся, что реализация браузера будет нацелена на максимальную совместимость с существующими загрузчиками модулей, но пока мы не знаем. Возможно, это не имеет ничего общего с браузером, но с тем, как сервер разрешает идентификаторы модулей. Я признаюсь, что в последнее время я не следил за развитием, поэтому любые другие идеи очень ценятся:)