JavaScript ES6中export、import与export default的用法和区别


Posted in Javascript onMarch 14, 2017

前言

相信很多人都使用过export、export default、import,然而它们到底有什么区别呢? 在看他们之间的区别之前,我们先来看看它们的用法。

ES6 import和export的用法

ES6之前已经出现了js模块加载的方案,最主要的是CommonJS和AMD规范。commonjs主要应用于服务器,实现同步加载,如nodejs。AMD规范应用于浏览器,如requirejs,为异步加载。同时还有CMD规范,为同步加载方案如seaJS。

ES6在语言规格的层面上,实现了模块功能,而且实现得相当简单,完全可以取代现有的CommonJS和AMD规范,成为浏览器和服务器通用的模块解决方案。

ES6模块主要有两个功能:export和import

  • export用于对外输出本模块(一个文件可以理解为一个模块)变量的接口
  • import用于在一个模块中加载另一个含有export接口的模块。

也就是说使用export命令定义了模块的对外接口以后,其他JS文件就可以通过import命令加载这个模块(文件)。如下(假设a和b文件在同一目录下)

// a.js

var sex="boy";
var echo=function(value){
console.log(value)
}
export {sex,echo} 
//通过向大括号中添加sex,echo变量并且export输出,就可以将对应变量值以sex、echo变量标识符形式暴露给其他文件而被读取到
//不能写成export sex这样的方式,如果这样就相当于export "boy",外部文件就获取不到该文件的内部变量sex的值,因为没有对外输出变量接口,只是输出的字符串。
// b.js
通过import获取a.js文件的内部变量,{}括号内的变量来自于a.js文件export出的变量标识符。
import {sex,echo} from "./a.js" 
console.log(sex) // boy
echo(sex) // boy

a.js文件也可以按如下export语法写,但不如上边直观,不太推荐。

// a.js
export var sex="boy";
export var echo=function(value){
console.log(value)
}

//因为function echo(){}等价于 var echo=function(){}所以也可以写成
export function echo(value){

 console.log(value)
}

以上是export与module的基本用法,再进行拓展学习

前面的例子可以看出,b.js使用import命令的时候,用户需要知道a.js所暴露出的变量标识符,否则无法加载。可以使用export default命令,为模块指定默认输出,这样就不需要知道所要加载模块的变量名。

//a.js
var sex="boy";
export default sex(sex不能加大括号)
//原本直接export sex外部是无法识别的,加上default就可以了.但是一个文件内最多只能有一个export default。
其实此处相当于为sex变量值"boy"起了一个系统默认的变量名default,自然default只能有一个值,所以一个文件内不能有多个export default。
// b.js
本质上,a.js文件的export default输出一个叫做default的变量,然后系统允许你为它取任意名字。所以可以为import的模块起任何变量名,且不需要用大括号包含
import any from "./a.js"
import any12 from "./a.js" 
console.log(any,any12) // boy,boy

ES6中export、import与export default区别

在JavaScript ES6中,export与export default均可用于导出常量、函数、文件、模块等,你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用,但在一个文件或模块中,export、import可以有多个,export default仅有一个。

具体使用:

1、

//demo1.js
export const str = 'hello world'

export function f(a){
 return a+1
}

对应的导入方式:

//demo2.js
import { str, f } from 'demo1' //也可以分开写两次,导入的时候带花括号

2、

//demo1.js
export default const str = 'hello world'

对应的导入方式:

//demo2.js
import str from 'demo1' //导入的时候没有花括号

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
用js判断用户浏览器是否是XP SP2的IE6
Mar 08 Javascript
jQuery创建插件的代码分析
Apr 14 Javascript
很好用的js日历算法详细代码
Mar 07 Javascript
jquery无缝向上滚动实现代码
Mar 29 Javascript
JavaScript中自定义事件用法分析
Dec 23 Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 Javascript
DropDownList实现可输入可选择(两种版本可选)
Dec 07 Javascript
javascript实现用户点击数量统计
Dec 25 Javascript
js实现淡入淡出轮播切换功能
Jan 13 Javascript
详解微信小程序文件下载--视频和图片
Apr 24 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
Sep 21 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
Nov 13 Javascript
微信小程序 动态绑定数据及动态事件处理
Mar 14 #Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
Mar 14 #Javascript
vuejs响应用户事件(如点击事件)
Mar 14 #Javascript
微信小程序 在线支付功能的实现
Mar 14 #Javascript
JS和canvas实现俄罗斯方块
Mar 14 #Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
Mar 14 #Javascript
canvas实现刮刮卡效果
Mar 14 #Javascript
You might like
php实现读取手机客户端浏览器的类
2015/01/09 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
javascript实现依次输入input自动定焦
2014/12/23 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
浅析nodejs实现Websocket的数据接收与发送
2015/11/19 NodeJs
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
关于python中导入文件到list的问题
2020/10/31 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
暇步士官网:Hush Puppies
2016/09/22 全球购物
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
出纳员岗位职责风险
2014/03/06 职场文书
优秀教师感人事迹材料
2014/05/04 职场文书
工程承诺书怎么写
2014/05/24 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
七一讲话心得体会
2014/09/05 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
交通事故责任认定书
2015/08/06 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书
导游词之无锡梅园
2019/11/28 职场文书