Javascript 进口*as和进口*as之间的差异;导入{默认为}

Javascript 进口*as和进口*as之间的差异;导入{默认为},javascript,ecmascript-6,import,ecmascript-5,Javascript,Ecmascript 6,Import,Ecmascript 5,我有以下进口产品: import { default as service } from "../service"; VS 我的服务是这样导出的 module.exports = { init(store) { _store = store; }, beginPayment() { } }; 我希望只有第二次导入可以工作,因为没有导出默认值,但是两者似乎都可以工作 这两者有什么区别?一个比另一个好吗 如果这是一个重复,我道歉,我没有找到

我有以下进口产品:

import { default as service } from "../service";
VS

我的服务是这样导出的

module.exports = {

    init(store) {
         _store = store;
    },

    beginPayment() {
    }

};
我希望只有第二次导入可以工作,因为没有导出默认值,但是两者似乎都可以工作

这两者有什么区别?一个比另一个好吗


如果这是一个重复,我道歉,我没有找到任何具体的我的例子在SO或谷歌

如果要导入默认值,则必须有默认值

一般来说,社区目前似乎对默认导出持谨慎态度,因为它们似乎不太容易被发现(我没有具体的引证,但我已经观看了对话!)

如果你是在一个团队中工作,当然,他们说什么都是正确的答案

因此,如果没有默认设置,您需要使用:

import * as service from "../service";
或者选择一个特定的东西:

import { specificNamedThing } from "../service";

那么,如果没有默认导出,“导入默认”是否被视为“导入*”?在上面的示例中,我没有默认的导出,但是我的第一个import语句可以工作,它看起来像一个“import*”。据我所知,如果没有导出默认值,则使用import default是无效的。它应该抛出一个异常。@Fenton它没有为我抛出异常,只是返回未定义的。我想我找到了为什么它对我有效。我们使用Babel来传输我们的代码,当在chrome调试器中关闭源代码映射时,我们所有的导入语句都转换为Webpack所需。这就是为什么我在网上找不到任何东西的原因。谢谢你的帮助!可能的重复我没有看到导入:{default as'xxx}在那个问题中解释过。仍然不确定这里的区别到底是什么。这是公认答案中的底部,从开始,我们也可以在导入时为它们指定所有不同的名称:
import { specificNamedThing } from "../service";