【发布时间】:2020-03-30 15:57:51
【问题描述】:
问题
我见过一个大型代码库,其中每个带有常量的文件看起来都像这样:
export const DEFAULT_ID = 0;
export const CURRENT_CODE = 'ABC123';
export default {
DEFAULT_ID,
CURRENT_CODE
};
他们对所有常量都使用命名和默认导出。当谈到常量实际上是如何被导入时,似乎它们通常只是将它们作为命名导出导入:
import {CURRENT_CODE} from './whatever.consts';
这种做法有什么用例吗?这是不寻常的,因为通常会使用命名或默认导出,而不是同时使用两者。
研究
我查看了this question,希望了解为什么人们会以这种方式一起使用它们,但我找不到任何东西。
我得到的最接近答案的是this article。在“为什么要将符号作为默认导出和命名导出?”部分中,他们提供了一个简短的示例,说明这如何允许某人使用 import {A, B} from './a' 而无需编写类似 import A, {B} from './a' 的东西。但是,这种解释对我来说没有意义,因为如果将常量简单地导出为命名导出,则可以使用相同的语法。
我的想法
我能想到的唯一原因是这种方法在导入常量时可以提供更大的灵活性。即,它允许同时使用两者
import {DEFAULT_ID, CURRENT_CODE} from './whatever.consts';
let id = DEFAULT_ID, code = CURRENT_CODE;
和
import INITIALIZATION_CONSTS from './whatever.consts';
let id = INITIALIZATION_CONSTS.DEFAULT_ID, code = INITIALIZATION_CONSTS.CURRENT_CODE
用于导入常量。
这是使用这种方法的正当理由吗?是否有任何最佳实践影响?
【问题讨论】:
-
特别是什么代码库?你问过作者吗?
标签: javascript ecmascript-6 es6-modules