如何在 JavaScript 中为默认导入添加别名?

问题描述 投票:0回答:2

使用 ES6 模块,我知道我可以为命名导入添加别名:

import { foo as bar } from 'my-module';

我知道我可以导入默认导入:

import defaultMember from 'my-module';

我想为默认导入添加别名,我认为以下内容可行:

import defaultMember as alias from 'my-module';

但这会导致解析(语法)错误。

我如何(或者我可以?)为默认导入添加别名?

javascript ecmascript-6 es6-modules
2个回答
1783
投票

defaultMember
已经是 一个别名 - 它不需要是导出函数/事物的名称。就做吧

import alias from 'my-module';

您也可以这样做

import {default as alias} from 'my-module';

但这相当深奥。


49
投票
起源、解决方案和答案:

背景:

模块可以从自身导出功能或对象以供其他模块使用

模块用于:

    代码复用
  • 功能分离
  • 模块化
什么是导入别名?

导入别名是您进行标准导入的地方,但您不使用导出模块预定义的名称,而是使用导入模块中定义的名称。

为什么这很重要?

您可能导入多个导出的模块,但导出的名称(来自不同的模块)是相同的,这会让 JS 感到困惑。 别名可以解决这个问题。

多个别名编译失败示例:

Failed to compile. /somepath/index.js SyntaxError: /somepath/index.js: Identifier 'Card' has already been declared (6:9)

导入别名将允许您将类似名称的导出导入到 你的模块。

import { Button } from '../components/button' import { Card } from '../components/card' import { Card } from 'react-native-elements'

导入命名导出时(非默认):

// my-module.js function functionName(){ console.log('Do magic!'); } export { functionName };

导入模块:

import { functionName as AliasFunction} from "my-module.js"
什么是

默认导出

默认导出允许我们导出单个值或为您的模块提供后备值。

对于导入默认导出:

// my-module.js function functionName(){ console.log('Do magic!'); } export default functionName;
解决方案

问题中提到的

defaultMember

已经是别名了,你可以将名称更改为你喜欢的任何名称。

现在导入导出的函数(

functionName()
);

import AliasFunction from "my-module.js"

或者像这样(正如@Bergi提到的):

import {default as AliasFunction} from 'my-module.js';
    
© www.soinside.com 2019 - 2024. All rights reserved.