我和我的同事发生争执,我们似乎无法从任何官方来源(MDN,webpack文档......)找到答案.我的研究也没有取得多少成果.即使在进口方面也似乎存在疑问.
我们的设置是Webpack,Babel和典型的React/Redux应用程序.举个例子:
export * from './actions';
export * from './selectors';
export * from './reducer';
export { default } from './reducer';
Run Code Online (Sandbox Code Playgroud)
这允许我将Redux模块分成逻辑部分,使代码更易于阅读和维护.
然而,我的一些同事认为export * from,事实上可能会损害webpack树木震动的能力,因为他们相信在出口实际上只是再出口时会使用出口.
所以我的问题是,有没有事实证明或反驳这一点?
我想导出一些模块,如下面的方式,但总是失败..
foo.js
const foo = {
a: 'b'
};
export default foo;
Run Code Online (Sandbox Code Playgroud)
index.js
export foo from './foo'; // encounter error here
export * from './foo'; // it works..
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我不能使用第一种方法导出模块foo.js,在我看来,我可以导出任何像func,类,变量等.
我是 React 和 Redux 的新手,一直以来,我都将我所有的动作创建者和常量放在一个文件“../actions/index.js”中。当我开始时,这看起来不错,但现在,它变成了一大块不可读的代码。
您是否建议将 index.js 分解为functional1.js、func2.js、func3.js,然后根据需要从拆分的文件中导入操作:
import {sampleAction} from '../action/func1';
Run Code Online (Sandbox Code Playgroud)
或者有没有更好的方法来做到这一点?
对不起,如果这似乎是一个愚蠢的问题。我仍在尝试了解 React-Redux 应用程序中的最佳实践。
如何重新导出 ESM 模块中多个文件的导出内容,而不单独列出每个单独的导出内容?
我有一个 CommonJS 模块目录,其中包含许多我想要转换为 ESM 导入/导出的文件。目前,我有一个index.js包含以下内容的文件:
// this just re-exports everything that the sub-modules export
module.exports = [
'./mapConcurrent.js',
'./deferred.js',
'./utils.js',
'./rateMap.js',
'./concurrency.js',
'./retry.js',
].reduce((obj, file) => {
const m = require(file);
Object.assign(obj, m);
return obj;
}, {});
Run Code Online (Sandbox Code Playgroud)
这会重新导出模块目录中所有文件的所有导出,以便该模块的客户端只需导入一个文件并获取所有文件的所有入口点,而无需知道哪个入口点位于哪个文件中等等在。这对于 CommonJS 来说效果很好。
如何在 ESM 模块世界中完成类似的事情,而无需显式命名所有子文件中的每个导出?
javascript ×3
ecmascript-6 ×2
es6-modules ×2
node-modules ×1
node.js ×1
react-redux ×1
reactjs ×1
redux ×1
tree-shaking ×1
webpack ×1