博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React 中import时如何正确使用花括号'{ }',以及default,export的用法注意事项
阅读量:5242 次
发布时间:2019-06-14

本文共 1381 字,大约阅读时间需要 4 分钟。

转载自:https://segmentfault.com/a/1190000010651936

 

在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。

上文引用自:阮一峰老师的。


而我们这里要说的是在使用import语法引用模块时,如何正确使用{}

假如有一个B.js,想要通过import语法引用模块A.js,那么可以这么写:

// B.jsimport A from './A'

而上面的代码生效的前提是,只有在如下A.js中有默认导出export default语法时才会生效。也就是:

// A.jsexport default 42

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

// B.jsimport A from './A'import MyA from './A' import Something from './A'

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


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

import { A } from './A'

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

export const A = 42

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

// B.jsimport { A } from './A'                 // 正确,因为A.js中有命名为A的export import { myA } from './A' // 错误!因为A.js中没有命名为myA的export import { Something } from './A' // 错误!因为A.js中没有命名为Something的export

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

// A.jsexport const A = 42 export const myA = 43 export const Something = 44

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

// B.jsimport A, { myA, Something } from './A'

这里我们使用导入默认导出A,以及命名导出myASomething

我们甚至可以在导入的时候重命名导入:

import X, { myA as myX, Something as XSomething } from './A'

总结:模块的默认导出通常是用在你期望该从模块中获取到任何想要的内容;而命名导出则是用于一些有用的公共方法,但是这些方法并不总是必要的。

转载于:https://www.cnblogs.com/dongfangchun/p/8290549.html

你可能感兴趣的文章
bootstrap的使用
查看>>
洛谷P3216 [HNOI2011] 数学作业 [矩阵加速,数论]
查看>>
分享5个有帮助的CSS选择器
查看>>
如何搭建web服务器 使用Nginx搭建反向代理服务器 .
查看>>
android中状态栏透明
查看>>
SQL注入防御绕过——宽字节注入
查看>>
匿名函数(lambda)
查看>>
OpenCV中InputArray和OutputArray使用方法
查看>>
Java与.NET 的Web Services相互调用
查看>>
linux 查看并关闭窗口
查看>>
使用Http-Repl工具测试ASP.NET Core 2.2中的Web Api项目
查看>>
通过实例理解 RabbitMQ 的基本概念
查看>>
WPF自定义控件
查看>>
ASP.NET Core 2.2 基础知识(一) 依赖注入
查看>>
Docker在Windows上运行NetCore系列(一)使用命令控制台运行.NetCore控制台应用
查看>>
微信支付现金红包接口应用实例代码说明和DEMO详解,适合用来做微信红包营销活动、吸粉利器...
查看>>
简单说一下UWP中的JumpList
查看>>
微信小程序把玩(七)数据绑定
查看>>
C#使用Xamarin开发可移植移动应用(1.入门与Xamarin.Forms页面),附源码
查看>>
UWP开发笔记——嵌套式页面的实现
查看>>