sfl*_*che 307 javascript ecmascript-6 es6-modules
使用ES6模块,我知道我可以为命名导入添加别名
import { foo as bar } from 'my-module';
Run Code Online (Sandbox Code Playgroud)
而且我知道我可以导入默认导入
import defaultMember from 'my-module';
Run Code Online (Sandbox Code Playgroud)
我想为默认导入添加别名,我认为以下内容可行
import defaultMember as alias from 'my-module';
Run Code Online (Sandbox Code Playgroud)
但这会导致解析(语法)错误.
我怎么能(或者我可以?)别名默认导入?
Ber*_*rgi 583
defaultMember已经是别名 - 它不需要是导出的函数/东西的名称.做就是了
import alias from 'my-module';
Run Code Online (Sandbox Code Playgroud)
或者你可以做
import {default as alias} from 'my-module';
Run Code Online (Sandbox Code Playgroud)
但这相当深奥.
Sta*_*kin 46
模块可以从自身导出功能或对象以供其他模块使用
模块用于:
导入别名是您进行标准导入的地方,但您不使用导出模块预定义的名称,而是使用导入模块中定义的名称。
您可能会导入多个导出的模块,但导出的名称(来自不同的模块)是相同的,这会让 JS 感到困惑。别名可以解决这个问题。
多个别名编译失败的示例:
Failed to compile.
/somepath/index.js
SyntaxError: /somepath/index.js: Identifier 'Card' has already been declared (6:9)
Run Code Online (Sandbox Code Playgroud)
导入别名将允许您将类似名称的导出导入到您的模块中。
import { Button } from '../components/button'
import { Card } from '../components/card'
import { Card } from 'react-native-elements'
Run Code Online (Sandbox Code Playgroud)
导入命名导出时(非默认):
// my-module.js
function functionName(){
console.log('Do magic!');
}
export { functionName );
Run Code Online (Sandbox Code Playgroud)
导入模块:
import { functionName as AliasFunction} from "my-module.js"
Run Code Online (Sandbox Code Playgroud)
默认导出允许我们导出单个值或为您的模块提供后备值。
对于导入默认导出:
// my-module.js
function functionName(){
console.log('Do magic!');
}
export default functionName;
Run Code Online (Sandbox Code Playgroud)
问题中提到的defaultMember已经是别名,您可以将名称更改为您喜欢的任何名称。
functionName());import AliasFunction from "my-module.js"
Run Code Online (Sandbox Code Playgroud)
或者像这样(正如@Bergi提到的):
import {default as AliasFunction} from 'my-module.js';
Run Code Online (Sandbox Code Playgroud)