javascript从' /文件夹'导入使用index.js

时间:2016-02-16 20:17:07

标签: 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...
}




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

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

1 个答案:

答案 0 :(得分:56)

  

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

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

这就是节点的工作方式 - 当需要目录时,将使用它的index.js文件。像browserifywebpack这样的捆绑包遵循这个约定(出于比较的原因)。