有没有办法从JavaScript文件中获取所有导出的名称?
假设我有一个JavaScript文件(lib.js),它导出一些类、函数等有没有办法从JavaScript文件中获取所有导出的名称?,javascript,object,module.exports,Javascript,Object,Module.exports,假设我有一个JavaScript文件(lib.js),它导出一些类、函数等 export class Employment { id = ""; startDate = ""; endDate = ""; companyEmailAddress = ""; }; export function HolidayPopupContainer() { return (<div id="#HolidayPopupContainer" />); }
export class Employment {
id = "";
startDate = "";
endDate = "";
companyEmailAddress = "";
};
export function HolidayPopupContainer() {
return (<div id="#HolidayPopupContainer" />);
}
export default withStyles(styles)(Button);
export default class DayView extends React.Component {
constructor(props) {
super(props);
this.state = {
readOnly: false
}
};
export const Status = [
"Select Status",
"Pending",
"Approved",
"Rejected",
"All"
]
有什么帮助吗?首先,一个模块中应该只有一个默认导出。如果您修复了该问题,并删除了其中一个默认导出,例如,您将
DayView
更改为命名导出,然后使用
import * as LibNamespace from './lib.js'
您将拥有一个(名称空间)对象,其属性为命名导出,以及默认导出的default
属性。对于您的代码,此对象的键将
console.log(Object.keys(LibNamespace))
// ['Employment', 'HolidayPopupContainer', 'default', 'DayView', 'Status']
如果希望将with style
命名为“命名”,并包含在上述内容中而不是default
,则需要将其改为命名导出:
const exportedVar = withStyles(styles)(Button);
export { exportedVar as withStyles };
但这有点让人困惑,因为它看起来已经有了一个名为withStyles
的变量。可能将导出的变量称为其他变量:
export const buttonResult = withStyles(styles)(Button);
(或您喜欢的任何内容)根据文档-,每个模块只能有一个默认导出
除了上述解决方案之外,还可以使用动态导入来获取导出的名称
//some.js
export const name = "someName";
export class Employment {
id = "";
startDate = "";
endDate = "";
companyEmailAddress = "";
};
export function HolidayPopupContainer() {
return "HolidayPopupContainer";
}
export default class DayView {
constructor() {
}
}
export const Status = [
"Select Status",
"Pending",
"Approved",
"Rejected",
"All"
]
//index.js
const exportedVar = [];
import('./some.js')
.then(module => {
const {default: defaultExport, ...rest} = module;
exportedVar.push(defaultExport.name, ...Object.keys(rest));
console.log(exportedVar);
});
请参阅-import*作为“模块名称”中的名称代码>。。。现在,name.Employment
,name.HolidayPopupContainer
等是您访问他导出的内容的方式(名称可以是您想要的任何内容)-这是因为我没有尝试过,所以请更正我的错误,但我认为您应该能够从“/Lib”中执行import*作为Lib
然后执行Object.keys(Lib)
。但是,您应该从某些导出中删除默认关键字,因为default
将成为lib上的一个属性。如果对象属性是您要查找的,则可以使用Object.keys,在这种情况下,属性是您导出的项?@Kobe<代码>导入默认导出,*作为“模块名称”中的名称代码>?@JaromandaX我想那会有用的,不错的。
const exportedVar = [];
import('./some.js')
.then(module => {
const {default: defaultExport, ...rest} = module;
exportedVar.push(defaultExport.name, ...Object.keys(rest));
console.log(exportedVar);
});