13

Взгляд в Интернете Я запутался со специальным файлом модуля index.js.Модули ES6 (EcmaScript 2015): import 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 часть импорта во всех браузерах (когда модули будут поддерживаться во всех браузерах)?

ответ

17

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

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


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

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

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 часть импорта во всех браузерах, а также (когда модули будут поддерживаться на все браузеры)?

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

+0

Отлично! Спасибо, приятно знать, что – Zorgatone

Смежные вопросы