ES6 中有没有一行行类比 ES5 `module.exports = require('./inner.js')`?

问题描述 投票:0回答:2
// before
module.exports = require('./inner.js');
// nowadays
export default from './inner.js';

我正在尝试这样做,但 babel 只允许在 es7 第 1 阶段这样做,因为它是 目前的提案。所以现在,我坚持这两行:

import sticker from './box-sticker.jsx';
export default sticker;

我可以将它们缩短为 1 吗?

javascript module ecmascript-6 babeljs
2个回答
32
投票

你应该能够做到

export {default as default} from './inner.js';
// or even
export {default} from './inner.js';

具有当前的 ES6 语义。

但是我不认为使用 ES 下一个提案有什么问题,我非常有信心它会进入 ES7 ES8。


0
投票

简短回答:

不要。

避免一对一的进出口。

直接导入内容,无需中间索引文件:

import inner from './inner.js';

长答案:

我认为现在给定的模式带来的危害远大于提供的任何好处 - 即用无意义的 index.js 文件填充存储库,使 IDE 中的索引变得更加困难。

有:

// MyComponent/inner.js
export default function MyComponent() {};

// MyComponent/index.js
export {default} from './inner.js';

// usage:
import MyComponent from './MyComponent';

与以下内容相同(但仍少 1 个文件):

// MyComponent/inner.js
export default function MyComponent() {};

// usage:
import MyComponent from './MyComponent/inner.js';

import MyComponent from './MyComponent/inner';
如今也可以与大多数捆绑程序一起使用(但是,对于直接使用 /node、deno、浏览器/ 扩展,仍然需要。

© www.soinside.com 2019 - 2024. All rights reserved.