Javascript ES6-是否有一种优雅的方法可以导入所有命名的导出,而不是默认的导出?
我正在寻找一种优雅的方法来导入所有命名的导出,而不必导入默认值 在一个文件中,我导出了许多命名常量和一个默认值:Javascript ES6-是否有一种优雅的方法可以导入所有命名的导出,而不是默认的导出?,javascript,ecmascript-6,Javascript,Ecmascript 6,我正在寻找一种优雅的方法来导入所有命名的导出,而不必导入默认值 在一个文件中,我导出了许多命名常量和一个默认值: // myModule.js const myDefault = 'my default' export const named1 = 'named1' export const named2 = 'named2' // many more named exports - otherwise this would not be an issue... export default
// myModule.js
const myDefault = 'my default'
export const named1 = 'named1'
export const named2 = 'named2'
// many more named exports - otherwise this would not be an issue...
export default myDefault
在另一个文件中,我希望有一种优雅的方式,只导入所有命名的导出,而不必导入默认值:
// anotherFile.js
// this is what I would like to do, but syntax is not supported, right?
import { * as namedOnly } from './myModule'
// anotherFile.js
import omit from 'object.omit'
import * as all from './myModule'
const namedOnly = omit(all, 'default')
我确实不想:
// anotherFile.js
import myDefault, * as namedOnly from './myModule'
因为我不需要在anotherFile.js
中使用默认值,而且我的linting工具让我感到困扰
已定义但未使用的myDefault
。我也不想:
// anotherFile.js
import {
named1,
named2,
... // many more
} from './myModule'
因为打字太多了。我也不想要对象。省略默认值:
// anotherFile.js
// this is what I would like to do, but syntax is not supported, right?
import { * as namedOnly } from './myModule'
// anotherFile.js
import omit from 'object.omit'
import * as all from './myModule'
const namedOnly = omit(all, 'default')
谢谢你的帮助 在“命名”和“默认”导出之间没有分隔。默认的导出是一个命名的导出,它恰好有一个名称
default
,这是一个特殊的大小写,便于某些语法使用
导入所有导出密钥的唯一方法是使用
import * as foo from "foo";
这将包括指定的导出default
(如果有)。如果您希望将其从检查中排除,则取决于您是否在自己的逻辑中处理它,就像您在omit()
示例中所做的那样。好,所以我使用lodash!
import*作为“./Modules.DATA.store”中的MDATA;
{defaultModuleData:{.map({.omit(MDATA,['default']),(ModClass)=>new ModClass())}
我不是大球迷,也不是性能友好,但没有选择 我不相信有较短的语法。ES规范中没有当前语法允许这种情况。好的,谢谢!我想我可能不知怎么错过了。。。但如果能有就好了,对吧?!从“/myModule”导入*作为myModule,您最关心的是什么代码>与myModule.named1类似?从技术上讲,
myModule.default
存在,但您不必使用它。问题的一部分是默认导出是命名导出,它只是命名为default
@loganfsmyth。我的“担心”是我想循环所有命名导出,而不必删除/忽略默认值
…如何将foo转换为对象?显然它属于Module
@tonix类型,您可以复制它的所有属性。这实际上取决于为什么它是模块对象而不是普通对象很重要。