web-dev-qa-db-ja.com

index.jsを使用した '/ folder'からのJavaScriptインポート

私は次のようなものを見たいくつかのケースに気づきました:

// /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...
}

import masterReducer from './reducers'を呼び出す最後の「ファイル」に注意してください-これは、index.jsファイルからdefault exportをインポートする必要があると信じているようです。

これは実際に仕様の一部ですか? -私の解釈/質問は、これがimportステートメントをCommonJSスタイルのrequiresステートメントに変換するWebPack v1を使用する多くの人々の結果であるということですか?または、これは「公式」import/exportをサポートするWebPack v2で壊れますか?

44
Jordan

これは実際に仕様の一部ですか?

いいえ。モジュール識別子('./reducers'あなたの場合)は、実際のモジュールに解決されるのは、モジュールローダー/バンドラーの実装に任されています。ES6によって特定されていません。また、 CommonJs でも指定されていないようです。

これは、ノードが行う方法です。ディレクトリが必要な場合は、index.jsファイルが使用されます。 browserify または webpack などのバンドラーは、この規則に従いました(互換性のため)。

58
Bergi