JavaScript中如何从模块导入多个函数到单个对象中?
实现方案
你写的import {get, set} as moduleName from 'module-name'不是现行ECMAScript模块的标准语法,原生不支持这种写法。要满足「仅导入需要的方法、规避作用域命名冲突、不引入模块冗余内容」的需求,有两种符合标准的实现方式:
- 手动聚合导入(最稳妥、100%按需)
先导入你需要的指定方法,再手动挂载到自定义命名空间对象上即可,写法如下:
这种写法只会加载你显式声明的import { get, set } from 'module-name' const moduleName = { get, set } moduleName.get()get、set两个方法,完全不会引入模块内的其他导出内容,调用时通过自定义对象访问属性,不会和当前作用域的同名变量产生冲突。 - 命名空间导入(适配现代构建工具场景)
也可以直接使用ES标准的全量命名空间导入语法:
不需要担心这种写法会带来冗余代码:所有主流前端构建工具(Rollup、Webpack、Vite等)都支持ES模块静态分析与Tree Shaking,只要你代码里只调用import * as moduleName from 'module-name' moduleName.get()moduleName.get()、moduleName.set(),模块内其他未被引用的导出都会在构建阶段被剔除,不会打包进最终产物。
注意:目前有对应的ES语法提案在TC39流程中推进,但尚未进入正式标准,生产环境不建议使用未落地的非标准语法。
内容的提问来源于stack exchange,提问作者M G
相关产品推荐
相关产品推荐

