ES-2015 模块可以自我感知吗?
Can an ES-2015 module be self-aware?
在 javascript ES-2015 模块中,模块成员可以知道还有哪些其他模块成员吗?
例如,在 CommonJS 模块中,这是可能的:
function square(x) {
return x * x;
}
function whoAmI() {
return Object.keys(module.exports); // ['square','whoAmI']
}
module.exports = {
square: square,
whoAmI: whoAmI
};
在对应的ES-2015模块中,我们如何编写whoAmI()
函数呢?
export function square(x) {
return x * x;
}
export function whoAmI() {
// ?????
}
您可以从自己导入 *
,然后导出 Object.keys
结果:
// myModule.js
import * as exports from './myModule';
export function square(x) { return x * x; }
export let whoAmI = Object.keys(exports);
// consumer.js
import {whoAmI} from `./myModule';
console.log(whoAmI);
> ['square']
这将不包括 whoAmI
,因此要包括它:
export let whoAmI = Object.keys(exports).concat('whoAmI');
在 javascript ES-2015 模块中,模块成员可以知道还有哪些其他模块成员吗?
例如,在 CommonJS 模块中,这是可能的:
function square(x) {
return x * x;
}
function whoAmI() {
return Object.keys(module.exports); // ['square','whoAmI']
}
module.exports = {
square: square,
whoAmI: whoAmI
};
在对应的ES-2015模块中,我们如何编写whoAmI()
函数呢?
export function square(x) {
return x * x;
}
export function whoAmI() {
// ?????
}
您可以从自己导入 *
,然后导出 Object.keys
结果:
// myModule.js
import * as exports from './myModule';
export function square(x) { return x * x; }
export let whoAmI = Object.keys(exports);
// consumer.js
import {whoAmI} from `./myModule';
console.log(whoAmI);
> ['square']
这将不包括 whoAmI
,因此要包括它:
export let whoAmI = Object.keys(exports).concat('whoAmI');