Javascript 中的 import * 有什么作用?

iRo*_*tia 6 javascript reactjs

在 Github 上浏览这个 repo并试图理解代码的工作

在这里,作者(或程序员)在多个地方提到了 import * 所以我试图理解和理解 import * 是如何工作的?

首先在他的 repo 的 Game.js 文件中,他提到/这样写

import * as actions from '../actions';
Run Code Online (Sandbox Code Playgroud)

在 VS Code 中,当我单击'../actionsusing 命令时,它会将我重定向到此文件 -> index.js

然后在 Index.js 他们有这样的东西

import * as ActionTypes from './action-types';
Run Code Online (Sandbox Code Playgroud)

当我点击./action-types它时会将我重定向到这里action-types.js

我浏览了 firefox 文档,但我无法清楚地理解第一个示例,例如,动作文件夹包含多个文件,以及如何从 '../actions' 导入 * 作为动作;平均 index.js 文件

虽然我知道他已经使用actions.functionName()或调用/引用了这些函数ActionType.TypeName

我的首要问题仍然存在

怎么import * as actions from '../actions'; mean index.js归档?

小智 7

import * as name语法导入 javascript 文件的所有导出内容。

例如,如果您想导入整个模块的内容,则访问该doAllTheAmazingThings()函数

import * as myModule from '/modules/my-module.js';
myModule.doAllTheAmazingThings();
Run Code Online (Sandbox Code Playgroud)

来自文档


Jer*_*oen 0

当您在 import 语句中引用目录时,它会查找并加载该目录中的 index.js 文件。我通常所做的是将类和函数导出到分组对象中的该目录下,以便可以轻松访问它们:

例如,在 index.js 中,我导出如下内容:

{
    Class1,
    method1
}
Run Code Online (Sandbox Code Playgroud)

其中每个都是这样导入的:

import Class1 from './Class1';
Run Code Online (Sandbox Code Playgroud)

所以他们只是将目录中的文件中的类/方法/...分组。

然后您可以轻松访问它,如下所示:

import { Class1, method1 } from './mymodule';
Run Code Online (Sandbox Code Playgroud)

import Class1 from './mymodule/Class1';
Run Code Online (Sandbox Code Playgroud)