我注意到一些案例,我发现过以下情况:
// /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
支持?
答案 0 :(得分:56)
这实际上是规范的一部分吗?
没有。如何将模块标识符(在您的情况下为'./reducers'
)解析为实际模块,由模块加载器/捆绑器实现,它不是由ES6指定的。它似乎也没有在CommonJs中指定。
这就是节点的工作方式 - 当需要目录时,将使用它的index.js
文件。像browserify或webpack这样的捆绑包遵循这个约定(出于比较的原因)。