ES模块如何不经过解构直接导出utils.lodashAlternative下的所有方法
ES模块的export语法是静态解析的,export { xxx }语法中的大括号不是对象字面量,而是导出标识符的列表,不支持展开运算符,也不允许直接导出对象属性表达式,所以export utils.lodashAlternative、export {...data}这两种写法都不符合语法规范。
方案1:使用默认导出(无需列方法名,改动最小)
直接将整个lodashAlternative对象作为默认导出即可:
import { utils } from 'shared' export default utils.lodashAlternative
使用方导入示例:
import lodashUtil from '你的模块路径' const { pick, get } = lodashUtil
方案2:保持具名导出(兼容原有导入写法)
如果你不想改动使用方的导入逻辑(即仍然支持import { pick } from '你的模块路径'写法),有两个可选实现:
- 简化现有写法,把解构和导出合并为一行,只需要写一次方法名:
import { utils } from 'shared' export const { pick, get, isEmpty, sortBy, orderObjectsArray, isString } = utils.lodashAlternative
- 如果你的环境支持CommonJS和ES模块混合使用,可以直接通过
module.exports导出整个对象,无需手动列方法名,使用方可以继续用原有具名导入的写法:
import { utils } from 'shared' module.exports = utils.lodashAlternative
注意:该写法在Node.js原生ES模块环境下需要开启
esModuleInterop配置,webpack、Vite等构建工具默认支持该兼容。
内容的提问来源于stack exchange,提问作者Andrii Radkevych
相关产品推荐
相关产品推荐

