ES6中export default和export之间的区别详解

 更新时间:2023年04月24日 09:24:31   作者:儒雅的烤地瓜  
export和export default都是es6语法中用来导出组件的,可以导出的文档类型有( 数据、常量、函数、js文件、模块等),下面这篇文章主要给大家介绍了关于ES6中export default和export之间的区别的相关资料,需要的朋友可以参考下

🎈 export default 和 export 有什么区别:

export 、export default,都属于ES6里面的语法

1. export与export default均可用于导出常量、函数、文件、模块等

2. 你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用

3. 在一个文件或模块中,export、import可以有多个,export default仅有一个

export default 用于规定模块的默认对外接口,只能有一个,所以 export default 在同一个模块中只能出现一次。

4. 通过export方式导出,在导入时要加{ },export default则不需要,因为它本身只能有一个

export default的import方式之所以不需要使用大括号包裹。因为对于export default 其输出的本来就只有一个接口,提供的是模块的默认接口,自然不需要使用大括号包裹。

5、 export 可以直接导出或者先定义后导出都可以,export default只能先定义后导出

👉 export

export 可以直接导出或者先定义后导出都可以。

示例:直接导出

export let i = “hello”;
export function myFun(){ };

示例:先定义后导出

let i = “hello";
function myFun(){ };
export { i , myFun }   // 必须加花括号{ }

👉 export default

export default是模块的默认对外接口,只有一个,所以只能出现一次。

export default只能先定义后导出
示例:先定义后导出

function myFun(){ };
export default myFun  // 不要加花括号{ }

👉 示例:export 导出方式

// export导出方式
// one.js
// 1、export可以有多个
// 2、可以各自分开导出也可以同时导出多个;
// 3、export可以直接导出或者先定义后导出
 
//😀 直接导出
export const str = "blablabla~";
export function log(sth) { 
  return sth;
}
export function cale(a,b){
  return a+b
}
 
//😀 先定义后导出
// const str = "blablabla~";
// function log(sth) { 
//   return sth;
// }
// function cale(a,b){
//   return a+b
// }
// export {str}
// export {calc}
// export {log}
// export {str, log, cale}
 
// 对应的导入方式:
// two.js
// 1、引入时需要加花括号{ };
// 2、可以各自分开引入也可以同时引入多个;
// 3、引入的变量不能自定义名字
import { str, log, cale } from './one.js';  // 完整的路径
console.log(str); // blablabla~
console.log(calc(10,15)); // 25
console.log(calc); // [Function: calc]

 👉 示例:export default 导出方式

// export default导出方式
// one.js
// 1、export default 只能导出一个
// 2、export只能先定义后导出
 
//😀 只能先定义后导出
const str = "blablabla~";
export default str
 
// 对应的导入方式:
// two.js
// 1、引入时不需要加花括号{ };
// 2、引入的变量可以自定义名字
import str from './one.js'; // 完整的路径
console.log(str); // blablabla~

我在vscode运行以上js代码时出现了报错:

(node:18336) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension. 
警告:加载ES模块时,在package.json包中设置“ type”:“ module”或使用.mjs扩展名。

🎈  经过一番折腾,找到了解决方案:
解决方法:
1、安装新版node.js
2、使用npm init -y初始化项目,生成一个pakeage.json文件
3、在pakeage.json文件中添加"type": "module"

 ✔️ 最后的结果:

同类型报错问题,都可采取这种解决方案

报错:Warning: To load an ES module, set “type“: “module“ in the package.json or use the .mj

🔽 使用export default命令,为模块指定默认输出,这样就不需要知道所要加载模块的变量名

//a.js
let sex = "boy";
// 编译成 CommonJS: exports.default = sex (ES 编译成的 CommonJS 形式)
export default sex // sex不能加大括号

注意:原本直接export sex外部是无法识别的,加上default(或者export {sex})就可以了。但是一个文件内最多只能有一个export  default。其实此处相当于为sex变量值"boy"起了一个系统默认的变量名default,自然default只能有一个值,所以一个文件内不能有多个export default。

// b.js
import any from "./a.js"; // 编译成 CommonJS: require('./a.js').default
import any12 from "./a.js"; // 编译成 CommonJS: require('./a.js').default
console.log(any,any12)   // boy  boy

注意:本质上,a.js文件的export default输出一个叫做default的变量,然后系统允许你为它取任意名字。所以,可以为import的模块起任何变量名,且不需要用大括号包含 。

扩展:export default 和 export都是 ES6 中的写法,其用法如下:

// 导出
export default a // 编译成 CommonJS: exports.default = a (ES 编译成的 CommonJS 形式)

// 引人
import a from './xxx' // 编译成 CommonJS: require('./xxx').default

// 导出
export { a } // 编译成 CommonJS: exports.a = a

// 引人
import { a } from './xxx' // 编译成 CommonJS: require('./xxx').a 

🎈 总结:

export default 和 export 的主要区别在于对应的import的区别:

export 对应的 import 需要知道 export 抛出的变量名或函数名,因为export 抛出的变量名或函数名导入时,不能自定义名字 ——import{a,b}

export default对应的 import 不需要知道 export抛出的变量名或函数名,因为export 抛出的变量名或函数名导入时,可以自定义名字,也就是说可以使用任意的变量名 ——import anyname。

通过两者导出的对象,导入时也存在写法上的差别。

1、export导出的对象,导入时写法:

import {i, myFun} from ‘模块’

2、export default导出的对象,导入时写法:

import 变量名 from ‘模块’

很明显,模块只有一个默认的导出的接口,所以只有一个对象被导出,导出的对象可以自定义一个变量名。

到此这篇关于ES6中export default和export之间的区别的文章就介绍到这了,更多相关export default和export区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js clearInterval()方法的定义和用法

    js clearInterval()方法的定义和用法

    clearInterval()方法能够取消setInterval()方法设置的定时器,本文给大家详解clearInterval()方法的定义和用法,感兴趣的朋友参考下。
    2015-11-11
  • JS实现简单获取最近7天和最近3天日期的方法

    JS实现简单获取最近7天和最近3天日期的方法

    这篇文章主要介绍了JS实现简单获取最近7天和最近3天日期的方法,涉及javascript针对日期与时间的相关数值运算与转换操作技巧,需要的朋友可以参考下
    2018-04-04
  • 谷歌地图打不开的解决办法

    谷歌地图打不开的解决办法

    这篇文章主要介绍了谷歌地图打不开的解决办法,本文给出了一个可以正常使用的谷歌地图调用案例,需要的朋友可以参考下
    2014-08-08
  • canvas绘制七巧板

    canvas绘制七巧板

    本文主要分享了canvas绘制七巧板的示例代码。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • JavaScript中常用的简洁高级技巧总结

    JavaScript中常用的简洁高级技巧总结

    这篇文章主要给大家总结介绍了关于JavaScript中常用的简洁高级技巧,文中通过示例代码介绍的非常详细,对大家的学习或者使用Javascript具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • layui表单提交到后台自动封装到实体类的方法

    layui表单提交到后台自动封装到实体类的方法

    今天小编就为大家分享一篇layui表单提交到后台自动封装到实体类的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • vue-router路由懒加载的实现(解决vue项目首次加载慢)

    vue-router路由懒加载的实现(解决vue项目首次加载慢)

    这篇文章主要介绍了vue-router路由懒加载的实现(解决vue项目首次加载慢),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • JavaScript onclick点击事件-点击切换图片且自动播放

    JavaScript onclick点击事件-点击切换图片且自动播放

    这篇文章主要介绍了JavaScript onclick点击事件-点击切换图片且自动播放,在页面中放图片并设置四个button,可以通过点击上一张下一张来切换图片,下面来看看具体的实现过程吧
    2022-01-01
  • javascript常用方法总结

    javascript常用方法总结

    经常使用的一些javascript方法,今天总结了一下,以便以后查询,有需要的小伙伴可以参考下。
    2015-05-05
  • uni-app使用uploadFile上传多张图片的具体实现

    uni-app使用uploadFile上传多张图片的具体实现

    在微信小程序中不支持多张图片上传,需要做循环实现多张图片上传,下面这篇文章主要给大家介绍了关于uni-app使用uploadFile上传多张图片的具体实现,需要的朋友可以参考下
    2023-04-04

最新评论