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中更短的 Array 类型转换
Oct 30 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
Sep 12 Javascript
jQuery中delegate和on的用法与区别详细解析
Jan 26 Javascript
JS实现向表格中动态添加行的方法
Mar 30 Javascript
js弹出窗口返回值的简单实例
May 28 Javascript
ReactNative页面跳转Navigator实现的示例代码
Aug 02 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
Dec 24 Javascript
Element ui 下拉多选时新增一个选择所有的选项
Aug 21 Javascript
vue递归组件实战之简单树形控件实例代码
Aug 27 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
Aug 28 Javascript
JS实现百度搜索框
Feb 25 Javascript
关于Vue Router的10条高级技巧总结
May 06 Vue.js
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
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
javascript实现汉字转拼音代码分享
2015/04/20 Javascript
js操作数组函数实例小结
2015/12/10 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
jstree单选功能的实现方法
2017/06/07 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
Javascript前端下载后台传来的文件流代码实例
2020/08/18 Javascript
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
python3人脸识别的两种方法
2019/04/25 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
python实现扫雷游戏
2020/03/03 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
CSS3点击按钮实现背景渐变动画效果
2016/10/19 HTML / CSS
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
商场促销活动方案
2014/02/08 职场文书
体育教师自我鉴定
2014/02/12 职场文书
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
社会实践活动总结报告
2014/04/29 职场文书
横幅标语大全
2014/06/17 职场文书
2014年安全员工作总结
2014/11/13 职场文书
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技