Javascript import из '/folder' с index.js
Я заметил несколько случаев, когда я видел что-то вроде следующего:
// /reducers/reducer1.js
export default function reducer1(state = {}, action){
// etc...
}
// /reducers/reducer2.js
export default function reducer2(state = {}, action){
// etc...
}
// /reducers/index.js
import { combineReducers } from 'redux';
import reducer1 from './reducer1';
import reducer2 from './reducer2';
export default combineReducers({
reducer1,
reducer2
})
// /store.js
import masterReducer from './reducers';
export default function makeStore(){
// etc...
}
Ответы
Ответ 1
Является ли это частью спецификации?
Нет. Как идентификаторы модулей ('./reducers'
в вашем случае) разрешены, фактические модули оставляются для реализации загрузчика/соединителя модуля, который не определен ES6. И это, кажется, не указано в CommonJs.
Это как раз то, как node делает это, когда требуется каталог, будет использоваться файл index.js
. Такие соглашения, как browserify или webpack, следуют этому соглашению (по соображениям совместимости).