ES6模块化之export和import的用法

小编 2026-06-05 阅读:743 评论:0
我的github github.com/zhuanyongxi…ES6中export和impor...

我的github github.com/zhuanyongxi…

ES6中export和import一般的用法有两种

  1. 命名导出(Named exports)
  2. 默认导出(Default exports)

命名导出(Named exports)

就是每一个需要导出的数据类型都要有一个name,统一引入一定要带有{},即便只有一个需要导出的数据类型。这种写法清爽直观,是推荐的写法。



//------ lib.js ------const sqrt = Math.sqrt;function square(x) {    return x * x;}function diag(x, y) {    return sqrt(square(x) + square(y));}export {sqrt, square, diag}//------ main.js ------import { square, diag } from 'lib';				console.log(square(11)); // 121console.log(diag(4, 3)); // 5

把export直接加到声明前面就可以省略{} 


//------ lib.js ------export const sqrt = Math.sqrt;export function square(x) {    return x * x;}export function diag(x, y) {    return sqrt(square(x) + square(y));}//------ main.js ------import { square, diag } from 'lib';				console.log(square(11)); // 121console.log(diag(4, 3)); // 5

无论怎样导出,引入的时候都需要{}

别名引入(Aliasing named imports)

当从不同模块引入的变量名相同的时候


import {speak} from './cow.js'import {speak} from './goat.js'	

这些写法显然会造成混乱

正确的方法是这样的


import {speak as cowSpeak} from './cow.js'import {speak as goatSpeak} from './goat.js'

可是,当从每个模块需要引入的方法很多的时候,这种写法就显得十分的繁琐、冗长,例如


import {  speak as cowSpeak,  eat as cowEat,  drink as cowDrink} from './cow.js'import {  speak as goatSpeak,  eat as goatEat,  drink as goatDrink} from './goat.js'cowSpeak() // moocowEat() // cow eatsgoatSpeak() // baagoatDrink() // goat drinks

解决方案就是命名空间引入了

命名空间引入(Namespace imports)


import * as cow from './cow.js'import * as goat from './goat.js'cow.speak() // moogoat.speak() // baa

十分的简洁优雅

默认导出(Default exports)

默认导出就不需要name了,但是一个js文件中只能有一个export default。


//------ myFunc.js ------export default function () { ... };//------ main1.js ------import myFunc from 'myFunc';myFunc();

其实这种导出方式可以看成是命名到处的变种,只不过把命名写成了default。

虽然export default只能有一个,但也可以导出多个方法。


export default {  speak () {    return 'moo'  },  eat () {    return 'cow eats'  },  drink () {    return 'cow drinks'  }}

引入与命名空间引入类似


import cow from './default-cow.js'import goat from './default-goat.js'cow.speak() // moogoat.speak() // baa

如果我们在编写模块的时候使用的导出方法不统一,那么引入的时候就需要考虑不同模块引入的方式。这种麻烦可以通过自引用的方法消除。方法如下

编写两种引入方式通用的模块


import * as myself from './ambidextrous-cow.js' // import this file into itself// this module's own namespace is its default exportexport default myselfexport function speak () {  console.log('moo')}

这样在引入的时候就不需要考虑引入方式了。


import cow from './ambidextrous-cow'import * as alsocow from './ambidextrous-cow'cow.speak() // mooalsocow.speak() // moo

两种引入方法均可。

这种方法也有一个小缺点,就是在我们编写的模块中,有一个function是常用的,我们想默认导出,可export default已经使用了,而我们知道export default在一个模块中只能使用一次。这时就要使用Object.assign


import * as myself from './ambidextrous-cow.js' export default Object.assign(speak, myself) export function speak () {  console.log('moo')}

需要注意的是,Object.assign只能用于function。

对应引入的例子

import cow from './ambidextrous-cow'import * as alsocow from './ambidextrous-cow'cow() // moocow.speak() // mooalsocow.speak() // moo
原文发布时间为:2018年06月21日
原文作者:砖用冰西瓜
本文来源: 掘金 如需转载请联系原作者
版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表