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

标签 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' 的最后一个"file"——一些人似乎认为这应该从索引中导入 default export .js 文件。

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

最佳答案

Is this actually part of the specification?

没有。如何将模块标识符(在您的情况下为 './reducers')解析为实际模块留给模块加载器/ bundler 的实现,ES6 未指定。而且CommonJs里面好像没有说明要么。

Node 就是这样做的——当需要一个目录时,它的 index.js 文件将被使用。像 browserify 这样的 bundler 或 webpack遵循此约定(出于兼容性原因)。

关于使用 index.js 从 '/folder' 导入 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442174/

相关文章:

javascript - 使用 javascript 选中的复选框不会 POST

javascript - 这两个 async/await 函数有什么区别?

javascript - 从外部调用 webpacked 代码(HTML 脚本标签)

webpack - 将 canjs 与 webpack 结合使用

javascript - Jquery `.find()` 找不到 `document` `input` 其值=

javascript - 使用 hashHistory 导航到路由

如果设置了 session 变量,Javascript React 重定向

javascript - 将 Object.setPrototypeOf 与 instanceof 一起使用

reactjs - 最简单的 Typescript + React + WebPack 示例生成错误

javascript - array.length- = 1 vs array.pop()