首页 > 解决方案 > 将 module.exports 重写为导出默认值,但保留导入单个实体的可能性

问题描述

是否可以实现与以下相同的功能:

module.exports = {
  a: 1,
  b: 2
}

...后来允许:
import { a } from 'path/to/module'

通过使用 ES6 模块(或导出默认值):

export const moduleName = {
  a: 1,
  b: 2
}

这样以后就不会将整个模块导入另一个模块,而只会导入其中的一部分

标签: javascript

解决方案


改用命名导出:

export const a = 1;
export const b = 2;

请注意,尽管这允许使用者执行类似 的操作import { a } from ...,但您现在实际上并没有解构具有a属性的对象,就像您最初使用module.exports语法所做的那样,您只是提取命名的导出。

如果需要,除了使用命名导出之外,您仍然可以导出默认对象:

export default { c: 'c', d: 'd' }

然后你可以导入

import obj from '...';
const { c } = obj;

推荐阅读