gpt4 book ai didi

javascript - ES6 的惯用揭示模块模式

转载 作者:可可西里 更新时间:2023-11-01 01:18:33 25 4
gpt4 key购买 nike

过去我用过revealing module pattern .

function myModule() {
function foo() ...
function bar() ...

return {
foo: foo,
bar: bar
};
}

在 ES6 中,这通过对象简写得到了改进。

function myModule() {
function foo() ...
function bar() ...

return { foo, bar };
}

现在使用内置模块语法,我正在努力寻找与上述最相似的首选模式。

选项 #1 命名导出

// export file
function foo() ...
function bar() ...

export { foo, bar };

// import file
import { foo, bar } from './export-file';

foo();
bar();

选项 #2 默认导出/导入解构

// export file
function foo() ...
function bar() ...

export default { foo, bar };

// import file
import baz from './export-file';

const { foo, bar } = baz;

foo();
bar();

选项 #3 带名称间距的默认导出/导入

// export file
function foo() ...
function bar() ...

export default { foo, bar };

//import file
import baz from './export-file';

baz.foo();
baz.bar();

我喜欢带有命名导出的选项 #1,因为它在“解构”导入语法中提供了简单性。

import { foo, bar } from './export-file';

我还想继续在导出对象中的导出文件底部明确定义模块的导出 API。

export { foo, bar };
// OR
export default { foo, bar };

我一直读到默认导出是首选,所以我一直在尝试找到一个包含默认导出的首选模式,但我不愿意采用,因为它看起来更冗长而且没有什么优点(除了名称间距的需要,或者在某些情况下同时包含命名和默认导出)。

是否有 ES6 模块语法的揭示模块模式的惯用模式?

最佳答案

I read all the time that default exports are preferred

不,他们不是。它们更简单,语法更短,可能会更频繁地使用(因为有更多的小型单导出模块),但它们通常不是首选。

使用正确的工具来完成工作。您已经知道您想要的优势。

Is there an idiomatic pattern for the revealing module pattern with ES6 module syntax?

是的,选项 #1。当您有多个内容要导出时,请始终使用命名导出。

你从挑剔的语法中得到显式别名和摇树

import { foo, bar } from './export-file';

以及命名空间

import * as baz from './export-file';

关于javascript - ES6 的惯用揭示模块模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44006369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com