JavaScript如何使用模块实现单声明导出整个文件的所有内容
ES Module 规范本身不支持你示例中export *这种直接导出当前文件所有顶层变量的语法,你可以通过以下两种符合规范的方式实现需求:
方案1:单条命名导出批量声明(推荐,无需修改原有导入逻辑)
不需要给每个变量/函数单独加export前缀,只要在文件末尾用一条export语句列出所有需要暴露的标识符即可,原有导入代码完全不用调整:test.js代码:
let testVar = 'Test Variable'; function testFunc() { return 'Test Function'; } // 单条导出所有需要对外暴露的内容 export { testVar, testFunc }
方案2:默认导出对象(无需手动列命名导出,但需要修改导入逻辑)
如果你接受调整导入写法,也可以把所有内容打包成对象通过默认导出暴露:test.js代码:
let testVar = 'Test Variable'; function testFunc() { return 'Test Function'; } export default { testVar, testFunc }
对应的script.js导入代码需要修改为:
import testImport from './test.js'; console.log( testImport.testVar ); // Returns 'Test Variable' console.log( testImport.testFunc() ); // Returns 'Test Function'
注意:该方案导出的对象不支持Tree Shaking,打包时无法剔除未使用的导出项,会增加最终产物的体积,非必要不推荐使用。
内容的提问来源于stack exchange,提问作者Toki
相关产品推荐
相关产品推荐

