当前位置: 首页 > 知识库问答 >
问题:

我们什么时候在JavaScript导入中使用 '{ }' ?[重复]

漆雕皓轩
2023-03-14

我正在学习Javascript导入,我还不明白当我们从另一个JS文件导入项目(函数、对象、变量)时使用花括号。

import Search from './models/Search';
import * as searchView from './views/searchView';
import { elements, renderLoader } from './views/base'
//elements is an object, renderLoader is a function

共有3个答案

姚骁
2023-03-14
import Search from './models/Search';

将默认导出的元素导入为搜索

import * as searchView from './views/searchView';

将已导出的所有内容导入search chView

import { elements, renderLoader } from './views/base'

导入手动拾取的命名导出元素数。

闻人越
2023-03-14
import { elements, renderLoader } from './views/base'

是您需要从模块导入单个命名导出的方式,在这种情况下,它是从base.js导入命名导出元素renderLoader

{elements,renderLoader}语法在许多情况下只是在ECMAScript标准的最新版本中添加的语法糖(称为解构)。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Object_destructuring

不过,在这种情况下,只需要获取所需的命名导出。

html" target="_blank">https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Import_a_single_export_from_a_module

请注意,您也可以为变量选择新名称,如下所示:

import { elements as newNameForElements, renderLoader as newNameForRenderLoader } from './views/base'

这将使元素导出可用为newNameForElements等。

居英资
2023-03-14

导入语句用于从另一个模块导入导出的绑定

花括号({})用于导入命名绑定,其背后的概念称为析构赋值析构赋值的概念是一个过程,它使从数组或对象中解包到导入模块中的不同变量中成为可能

大括号({})用于导入命名绑定

我想通过一个例子来解释ES6中不同类型的导入

假设我们有一个名为Animals(Animals.js)的模块,让我们假设该模块导出一个默认绑定Man和几个其他命名绑定,如CatDog

/*
 Animal.js
*/
..
export Cat;
export Dog
export default Man

从模块导入单个导出

为了从另一个模块导出单个导出(假设Cat),我们可以这样写

/*
 Anothermodule.js
*/
import {Cat} from "./Animals"

同样的狗

/*
 YetAnothermodule.js
*/
import {Dog} from "./Animals"

从模块导入多个导出

您还可以导入多个模块,如下所示

/*
 Anothermodule.js
*/
import {Dog, Cat} from "./Animals"

使用更方便的别名导入导出

/*
 Anothermodule.js
*/
import {Dog as Puppy}  from './Animals.js';

在导入过程中重命名多个导出

/*
 Anothermodule.js
*/
import {Dog as Puppy, Cat as Kitty}  from './Animals.js';

但是在将Man导入另一个模块的情况下,因为它是默认的导出,所以您可以像这样编写它

/*
 Anothermodule.js
*/
import Man  from './Animals.js';

例如,您还可以将上述两种变体混合使用

/*
 Anothermodule.js
*/
import Man, {Dog as Puppy, Cat as Kitty} from '/Animals.js';

导入整个模块的内容

如果你想导入所有你能使用的东西

/*
 Anothermodule.js
*/
import * as Animals from './Animals.js';

在这里,访问导出意味着使用模块名(本例中为“动物”)作为名称空间。例如,如果你想在这种情况下使用Cat,你可以像下面那样使用它

Animals.Cat

你可以在这里阅读更多关于导入的信息

你可以在这里读到关于破坏的内容

 类似资料:
  • 我正在学习Vue JS,发现有时我们导入{},有时我们导入时没有{}。请问有什么区别? 非常感谢。

  • 我有两个文件,第一个是todoHelper。js 它有 导入{addTodo} 但我也看到人们在做默认导出,而不仅仅是导出。有什么区别?

  • (1)重载是多态的集中体现,在类中,要以统一的方式处理不同类型数据的时候,可以用重载。 (2)重写的使用是建立在继承关系上的,子类在继承父类的基础上,增加新的功能,可以用重写。 (3)简单总结: 重载是多样性,重写是增强剂; 目的是提高程序的多样性和健壮性,以适配不同场景使用时,使用重载进行扩展; 目的是在不修改原方法及源代码的基础上对方法进行扩展或增强时,使用重写; 生活例子: 你想吃一碗面,我

  • 问题内容: 面试官问我: 什么是Observer,什么Observable时候应该使用它们? 我并不了解这些术语,因此当我回到家并开始使用GoogleObserver和Google搜索时Observable,从不同的资源中发现了一些要点: 1)Observable是一个类,Observer是一个接口。 2)Observable该类维护一个Observers的列表。 3)当一个Observable对

  • 问题内容: 我有两个文件,第一个是todoHelper.js 它有 以后我想在另一个文件中使用,我只是做 但是我也看到人们在默认情况下执行导出而不只是导出。有什么区别? 问题答案: 每个文件只能有一个导出默认值,因此当您导出默认值时,例如 您可以像导入 由于babel知道您正在尝试访问默认组件,因此可以使用任何名称在文件中访问它 现在假设你做 您可以在文件中包含多个此类导出,例如 当您导入时,您将

  • 问题内容: 我正在使用’multiprocess.Pool.imap_unordered’如下 我需要打电话或之后的for循环? 问题答案: 不,您没有,但是如果您不再使用游泳池,那可能是个好主意。 Tim Peters在此SO帖子中致电或致电的理由很明确: 至于Pool.close(),您应该在永远不会将更多工作提交给Pool实例的情况下(且仅在)进行调用。因此,通常在主程序的可并行化部分完成时