Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否存在导出与命名和默认导出相同常量的用例? 问题:_Javascript_Ecmascript 6_Es6 Modules - Fatal编程技术网

Javascript 是否存在导出与命名和默认导出相同常量的用例? 问题:

Javascript 是否存在导出与命名和默认导出相同常量的用例? 问题:,javascript,ecmascript-6,es6-modules,Javascript,Ecmascript 6,Es6 Modules,我见过一个很大的代码库,其中每个带有常量的文件都是这样的: export const DEFAULT\u ID=0; 导出常量当前_代码='ABC123'; 导出默认值{ 默认\u ID, 当前_代码 }; 它们对所有常量使用命名导出和默认导出。当谈到如何实际导入常量时,它们似乎通常只是将其作为命名导出导入: import{CURRENT_code}from./whatever.consts'; 这种做法有任何用例吗?这是不寻常的,因为通常使用命名导出或默认导出,而不是两者都使用 研究 我检

我见过一个很大的代码库,其中每个带有常量的文件都是这样的:

export const DEFAULT\u ID=0;
导出常量当前_代码='ABC123';
导出默认值{
默认\u ID,
当前_代码
};
它们对所有常量使用命名导出和默认导出。当谈到如何实际导入常量时,它们似乎通常只是将其作为命名导出导入:

import{CURRENT_code}from./whatever.consts';
这种做法有任何用例吗?这是不寻常的,因为通常使用命名导出或默认导出,而不是两者都使用

研究 我检查了一下,希望能了解一下为什么人们会以这种方式将它们结合在一起,但我什么也找不到

我得到的最接近于答案的东西是在。在“为什么将符号同时公开为默认导出和命名导出?”一节中,他们提供了一个简单的示例,说明这如何允许用户使用
import{a,B}from./a'
,而不需要编写类似于
import a,{B}from./a'
。但是,这种解释对我来说没有意义,因为如果常量只是作为命名导出导出,则可以使用相同的语法

我的想法 我能想到的唯一原因是,在导入常量时,这种方法可以提供更大的灵活性。也就是说,它允许同时使用

import{DEFAULT_ID,CURRENT_code}from./whatever.consts';
设id=默认的\u id,代码=当前的\u代码;

import INITIALIZATION_CONSTS from./whatever.CONSTS';
设id=INITIALIZATION\u CONSTS.DEFAULT\u id,code=INITIALIZATION\u CONSTS.CURRENT\u code
用于导入常量

这是使用这种方法的正当理由吗?是否存在任何最佳实践影响

这种做法是否有任何用例

不是真的。我能想到的唯一一件事是向后兼容性,如果模块是其他地方使用的库,可能与它们如何传输代码有关

我能想到的唯一原因是,在导入常量时,这种方法可以提供更大的灵活性

默认的导出不是必需的。您可以轻松地将命名空间导入仅用于命名导出:

import * as INITIALIZATION_CONSTS from './whatever.consts';

let id = INITIALIZATION_CONSTS.DEFAULT_ID, code = INITIALIZATION_CONSTS.CURRENT_CODE
这种做法是否有任何用例

不是真的。我能想到的唯一一件事是向后兼容性,如果模块是其他地方使用的库,可能与它们如何传输代码有关

我能想到的唯一原因是,在导入常量时,这种方法可以提供更大的灵活性

默认的导出不是必需的。您可以轻松地将命名空间导入仅用于命名导出:

import * as INITIALIZATION_CONSTS from './whatever.consts';

let id = INITIALIZATION_CONSTS.DEFAULT_ID, code = INITIALIZATION_CONSTS.CURRENT_CODE

特别是什么代码库?你问过作者吗?特别是什么代码库?你问过作者吗?