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 相关文章推荐
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
Jul 26 Javascript
JavaScript之appendChild、insertBefore和insertAfter使用说明
Dec 30 Javascript
js跨域访问示例(客户端/服务端)
May 19 Javascript
node.js中的http.createServer方法使用说明
Dec 14 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
Sep 23 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
May 26 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
Feb 27 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
Aug 30 Javascript
fastadmin中调用js的方法
May 14 Javascript
一文快速详解前端框架 Vue 最强大的功能
May 21 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
Jun 03 Javascript
JSON 入门教程基础篇 json入门学习笔记
Sep 22 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
提取HTML标签
2006/10/09 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
php中final关键字用法分析
2016/12/07 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
2020/09/13 PHP
jQuery对html元素取值与赋值的方法
2013/11/20 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
Python3读取文件常用方法实例分析
2015/05/22 Python
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
Python抽象类的新写法
2015/06/18 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
教师自荐书
2013/10/08 职场文书
上班玩手机检讨书
2014/02/17 职场文书
《火烧云》教学反思
2014/04/12 职场文书
幼儿生日活动方案
2014/08/27 职场文书
公证委托书标准格式
2014/09/11 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL