es6引用模块import后面加上花括号{}和不加花括号的区别

在使用import语法引用模块时,如何正确使用{}

例如:有两个文件,home.js、user.js

当需要在home.js中引入user.js的时候

//home.js

import user from ‘./user‘;

对于上面的这种引入方法,只有user.js文件中需要提供默认的export defulat进行导出(必须是默认导出)这样在home.js文件中就可以使用user了。如下

//user.js

export default ‘nihao‘

在这种不使用{}来引用模块的情况下,import模块时的命名是随意的,即如下三种引用命名都是正确的:

// home.js

import user from ‘./user‘

import user2 from ‘./user‘

import anyUser from ‘./user‘

因为它总是会解析到user.js中默认的export default。

而下面是使用了花括号命名的方法{user}来导入user.js:

import { user } from ‘./user‘

上面代码生效的前提是,只有在模块user.js中有如下命名导出为user的export 的代码,也就是:

//user.js

export const user = 42

而且,在明确声明了命名导出后,那么在另一个js中使用{}引用模块时,import时的模块命名是有意义的,如下:

// home.js

import { user } from ‘./user‘           // 正确,因为user.js中有命名为user的export

import { user2 } from ‘./user‘          // 错误!因为user.js中没有命名为user2的export

import { anyUser } from ‘./user‘        // 错误!因为user.js中没有命名为anyUser的export

要想上述代码正确执行,你需要明确声明每一个命名导出:

一个模块中只能有一个默认导出export default,但是却可以有任意命名导出(0个、1个、多个),你也可以如下,一次性将他们导入:

// user.js

import user, { user2, anyUser } from ‘./user‘

这里我们使用导入默认导出user,以及命名导出user2和anyUser。

原文地址:https://www.cnblogs.com/ranyonsue/p/11468727.html

时间: 2024-07-31 21:39:05

es6引用模块import后面加上花括号{}和不加花括号的区别的相关文章

13 类对象的声明中加小括号{}和不加小括号{}的区别

以下代码有什么问题? struct Test { Test( int ) {} Test() {} void fun() {} }; void main( void ) { Test a(1); a.fun(); Test b(); b.fun(); } A b.fun()会出错 B Test结构的定义中应该加上public修饰符,才能main函数值调用该类的方法 C Test(int) {}改成Test(int a) {} D 以上说法都错误 解答: b.fun();   //b不是Test的

(转)关于ES6的 模块功能 Module 中export import的用法和注意之处

关于ES6的 模块功能 Module 中export import的用法和注意之处 export default 的用法 export default命令用于指定模块的默认输出.显然,一个模块只能有一个默认输出,因此export deault命令只能使用一次.所以,import命令后面才不用加大括号,相反其它的export 输出 可以有多个,且import时必须加大括号,示例如下: 1 // modules.js 2 function add(x, y) { 3 return x * y; 4

理解ES6的模块(Understanding ES6 Modules)

理解ES6的Modules 原文出处: Understanding ES6 Modules. 基础(Basic) 在ES6中,每个模块的都是定义在它自己的文件中.在模块中定义的变量或者是函数在外部都是不可见的, 除非你显示的使用export来导出它们. 这意味着你可以在你的模块中编写代码, 然后只导出那些需要被其他部分可以访问的部分几个. ES6模块是使用原生的定义方式进行定义的. 如果想从一个模块中导出某个变量, 只需要使用关键词export. 相似的, 如果想要使用来自另外一个模块中的变量,

ES6 的模块系统

此文为翻译,原文地址在这儿:https://hacks.mozilla.org/2015/08/es6-in-depth-modules/[转] ES6 是 ECMAScript 第 6 版本的简称,这是新一代的 JavaScript 的标准.ES6 in Depth 是关于 ES6 的一系列新特性的介绍. 遥想 2007 年,笔者开始在 Mozilla 的 JavaScript 团队工作的时候,那个时候典型的 JavaScript 程序只有一行代码. 两年之后, Google Map 被发布.

Node.js 中使用 ES6 中的 import / export 的方法大全

转自原文 Node.js 中使用 ES6 中的 import / export 的方法大全, 2018.11 如何在 Node.js 中使用 import / export 的三种方法, 2018.8 nodejs_es6_tutorials 因为一些历史原因,虽然 Node.js 已经实现了 99% 的 ES6 新特性,不过截止 2018.8.10,How To Enable ES6 Imports in Node.JS 仍然是老大难问题 下面我来介绍三种方法可以让我们在 Node.js 中使

Python基础13_模块, import,

一. 模块 模块就是一个包含了python定义和声明的文件, 文件名就是模块的名字加上.py后缀, 也就是我们目前写的所有py文件都可以看成是一个模块, 但是我们import加载的模块一共分为四个通用类别: 1. 使用python编写的py文件 2. 已被编译为共享库或者DLL或C或者C++的扩展 3. 包好一组模块的包 4. 使用c编写并连接到python解释器的内置模块 模块的作用: 大的项目需要把相关的功能进行分离, 方便我们的日常维护, 以及新项目的开发 二. import import

[F2016061803] ES6的模块导入与变量解构的注意事项

在ES6中变量解构是这样的: const a = { b: 1 } const { b } = a 我们可以直接用解构赋值来获得对象的同名属性,这等效于: const b = a.b 除了变量的解构赋值,ES6的模块导入也提供了相似的语法: import { resolve } from 'path' 如果使用webpack构建项目的话,注意这里的解构与普通变量的解构是有所区别的,比如在a.js里有以下代码: export default { b: 1 } 如果按照普通变量的解构法则来导入这个包

Python引用模块和查找模块路径

模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中的一个.cs文件,Java中的一个.java或者编译后的.class文件可以认为是一个模块(但常常不表述为模块):对于解释型的语言会更加直观些,比如PHP的.php文件,在Python中就是.py文件可以认为是一个模块.在"模块"之上有"包",主要是

Python语言中循环引用(import)失败的解决方案

最近在开发智能家居项目hestia-rpi项目中,由于代码结构层级划分不合理,导致了循环引用(import)module失败的问题,错误如下: 1 2 3 4 5 6 7 8 9 10 Traceback (most recent call last):   File "./main.py", line 8, in <module>     from hestiarpi.library.server import server   File