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 相关文章推荐
firefox firebug中文入门教程 脚本之家新年特别版
Jan 02 Javascript
jquery中实现简单的tabs插件功能的代码
Mar 02 Javascript
详解JavaScript for循环中发送AJAX请求问题
Jun 23 Javascript
jquery+Jscex打造游戏力度条
Sep 12 Javascript
angular2 ng2-file-upload上传示例代码
Aug 23 Javascript
小程序实现留言板
Nov 02 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
Nov 20 Javascript
详解puppeteer使用代理
Dec 27 Javascript
写一个Vue Popup组件
Feb 25 Javascript
微信小程序实现发微博功能的示例代码
Jun 24 Javascript
js实现购物车商品数量加减
Sep 21 Javascript
javascript中call,apply,bind的区别详解
Dec 11 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
PHPMailer 中文使用说明小结
2010/01/22 PHP
php一个找二层目录的小东东
2012/08/02 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
python发送邮件实例分享
2017/07/28 Python
Python协程的用法和例子详解
2017/09/09 Python
python实现批量修改文件名代码
2017/09/10 Python
详解python单元测试框架unittest
2018/07/02 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
Python中url标签使用知识点总结
2020/01/16 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
英国女性化妆品收纳和家具网站:Beautify
2019/12/07 全球购物
初中地理教学反思
2014/01/11 职场文书
保安队长职务说明书
2014/02/23 职场文书
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
黄金搭档广告词
2014/03/21 职场文书
世界读书日的活动方案
2014/08/20 职场文书
法定授权委托证明书
2014/09/27 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书