sfl*_*che 17 javascript es6-modules
在过去,我使用了揭示模块模式.
function myModule() {
function foo() ...
function bar() ...
return {
foo: foo,
bar: bar
};
}
Run Code Online (Sandbox Code Playgroud)
使用ES6,这可以通过对象速记得到改进.
function myModule() {
function foo() ...
function bar() ...
return { foo, bar };
}
Run Code Online (Sandbox Code Playgroud)
现在有了内置的模块语法,我很难找到与上面最相似的首选模式.
选项#1命名为exports
// export file
function foo() ...
function bar() ...
export { foo, bar };
// import file
import { foo, bar } from './export-file';
foo();
bar();
Run Code Online (Sandbox Code Playgroud)
选项#2默认导出/导入与解构
// export file
function foo() ...
function bar() ...
export default { foo, bar };
// import file
import baz from './export-file';
const { foo, bar } = baz;
foo();
bar();
Run Code Online (Sandbox Code Playgroud)
选项#3默认导出/导入名称间距
// export file
function foo() ...
function bar() ...
export default { foo, bar };
//import file
import baz from './export-file';
baz.foo();
baz.bar();
Run Code Online (Sandbox Code Playgroud)
我喜欢选项#1和命名导出,因为它在"解构"导入语法中提供了简单性.
import { foo, bar } from './export-file';
Run Code Online (Sandbox Code Playgroud)
我还想继续在导出对象的导出文件底部明确定义模块的导出API.
export { foo, bar };
// OR
export default { foo, bar };
Run Code Online (Sandbox Code Playgroud)
我一直读到默认导出是首选的,所以我一直在努力找到一个包含默认导出的首选模式,但我不愿意采用,因为它似乎更加冗长,几乎没有优势(除了需要名称间距,或在某些情况下包含命名和默认导出).
是否有使用ES6模块语法的显示模块模式的惯用模式?
Ber*_*rgi 14
我一直读到默认导出是首选
不,他们不是.它们更简单,语法更短,并且可能更常用(因为有更多的小型单导出模块),但它们通常不是首选.
使用正确的工具完成工作.您已经知道自己想要的优势.
是否有使用ES6模块语法的显示模块模式的惯用模式?
是的,选项#1.如果要导出多个内容,请始终使用命名导出.
你会从挑剔的语法中获得明确的别名和树抖动
import { foo, bar } from './export-file';
Run Code Online (Sandbox Code Playgroud)
以及命名空间
import * as baz from './export-file';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4304 次 |
| 最近记录: |