使用index.js从'/ folder'导入javascript

Jor*_*dan 45 javascript ecmascript-6 webpack

我注意到一些案例,我看到过以下内容:

// /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...
}
Run Code Online (Sandbox Code Playgroud)

注意我们调用的最后一个"文件" import masterReducer from './reducers'- 有些人似乎认为这应该default export从index.js文件中导入.

这实际上是规范的一部分吗?- 我的解释/问题是,这是许多人使用WebPack v1将import语句转换为CommonJS风格requires语句的结果?或者这将在WebPack v2中打破"官方" import/ export支持?

Ber*_*rgi 61

这实际上是规范的一部分吗?

否.模块标识符('./reducers'在您的情况下)如何解析为实际模块留给模块加载器/捆绑器的实现,它不是由ES6指定的.它似乎也没有在CommonJs中指定.

这就是节点的作用 - 当需要一个目录时,它的index.js文件将被使用.像捆扎机browserify的WebPack遵循了这一约定(compat的原因).