ES6,import时如何正确使用花括号'{ }'
2018-01-12 08:47
253 查看
在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。
而我们这里要说的是在使用
假如有一个
而上面的代码生效的前提是,只有在如下
在这种不使用
因为它总是会解析到
而下面是使用了花括号命名的方式
上面代码生效的前提是,只有在模块
而且,在明确声明了命名导出后,那么在另一个
要想上述代码正确执行,你需要明确声明每一个命名导出:
ps: 一个模块中只能有一个默认导出
这里我们使用导入默认导出
我们甚至可以在导入的时候重命名导入:
总结:模块的默认导出通常是用在你期望该从模块中获取到任何想要的内容;而命名导出则是用于一些有用的公共方法,但是这些方法并不总是必要的。
而我们这里要说的是在使用
import语法引用模块时,如何正确使用
{}。
假如有一个
B.js,想要通过
import语法引用模块
A.js,那么可以这么写:
// B.js import A from './A'
而上面的代码生效的前提是,只有在如下
A.js中有默认导出的
export default语法时才会生效。也就是:
// A.js export default 42
在这种不使用
{}来引用模块的情况下,
import模块时的命名是随意的,即如下三种引用命名都是正确的:
// B.js import A from './A'
import MyA from './A'
import Something from './A'
因为它总是会解析到
A.js中默认的
export default。
而下面是使用了花括号命名的方式
{A}来导入
A.js:
import { A } from './A'
上面代码生效的前提是,只有在模块
A.js中有如下命名导出为
A的
export name的代码,也就是:
export const A = 42
而且,在明确声明了命名导出后,那么在另一个
js中使用
{}引用模块时,
import时的模块命名是有意义的,如下:
// B.js import { A } from './A' // 正确,因为A.js中有命名为A的export import { myA } from './A' // 错误!因为A.js中没有命名为myA的export import { Something } from './A' // 错误!因为A.js中没有命名为Something的export
要想上述代码正确执行,你需要明确声明每一个命名导出:
// A.js export const A = 42 export const myA = 43 export const Something = 44
ps: 一个模块中只能有一个默认导出
export default,但是却可以有任意命名导出(0个、1个、多个),你也可以如下,一次性将他们导入:
// B.js import A, { myA, Something } from './A'
这里我们使用导入默认导出
A,以及命名导出
myA和
Something。
我们甚至可以在导入的时候重命名导入:
import X, { myA as myX, Something as XSomething } from './A'
总结:模块的默认导出通常是用在你期望该从模块中获取到任何想要的内容;而命名导出则是用于一些有用的公共方法,但是这些方法并不总是必要的。
相关文章推荐
- React 中import时如何正确使用花括号'{ }',以及default,export的用法注意事项
- 在ES6模块特性中,import时如何正确使用花括号'{ }'
- python中如何正确使用import
- 如何正确理解和使用ES6 Promise?(We have a problem with promises)
- 如何正确的使用Java序列化技术
- Java中如何正确使用字体编码
- 如何正确使用ads
- Java中如何正确使用字体编码
- 如何在后台正确使用脚本
- 正确使用DOM--如何访问网页元素
- 如何正确使用标题元素、段落和强制换行
- 如何在IE中正确使用MSXML
- Linux系统如何正确使用和安装内核模块
- 如何正确使用Java I/O输出和读入数据
- 如何正确使用Java I/O输出和读入数据
- 如何正确使用160GB大硬盘
- 如何在 Windows 服务中正确使用 log4net
- 如何正确的安装使用shark1.1-2
- 如何正确使用Windows的Ping命令
- 如何正确的使用Java序列化技术