ES6模块化的import和export用法方法总结


Posted in Javascript onAugust 08, 2017

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 文件传参及处理技巧分析
May 13 Javascript
使用js正则控制input标签只允许输入的值
Jul 29 Javascript
Javascript中判断变量是数组还是对象(array还是object)
Aug 14 Javascript
javascript消除window.close()的提示窗口
May 20 Javascript
js图片轮播特效代码分享
Sep 07 Javascript
原生js实现图片放大缩小计时器效果
Jan 20 Javascript
Angular.JS中select下拉框设置value的方法
Jun 20 Javascript
详解webpack进阶之loader篇
Aug 23 Javascript
JS数组求和的常用方法总结【5种方法】
Jan 14 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
Oct 31 Javascript
js实现烟花特效
Mar 02 Javascript
Element Rate 评分的使用方法
Jul 27 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
Aug 08 #Javascript
webpack 2.x配置reactjs基本开发环境详解
Aug 08 #Javascript
vue-quill-editor实现图片上传功能
Aug 08 #Javascript
vue.js评论发布信息可插入QQ表情功能
Aug 08 #Javascript
vuejs使用FormData实现ajax上传图片文件
Aug 08 #Javascript
基于Vue实现支持按周切换的日历
Sep 24 #Javascript
JS中正则表达式要注意lastIndex属性
Aug 08 #Javascript
You might like
PHP 中文处理技巧
2010/04/25 PHP
php使用codebase生成随机数
2014/03/25 PHP
php数组去除空值函数分享
2015/02/02 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
JS 参数传递的实际应用代码分析
2009/09/13 Javascript
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
Angular实现下载安装包的功能代码分享
2017/09/05 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
2017/10/21 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
python函数装饰器用法实例详解
2015/06/04 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
python join方法使用详解
2019/07/30 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
波兰在线运动商店:YesSport
2020/07/23 全球购物
群胜软件Java笔试题
2012/09/29 面试题
应届生会计电算化求职信
2013/10/03 职场文书
护士在校生自荐信
2014/02/01 职场文书
文体活动总结范文
2014/05/05 职场文书
2014年检验员工作总结
2014/11/19 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python