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 相关文章推荐
ExtJS 下拉多选框lovcombo
May 19 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
Mar 19 Javascript
Bootstrap每天必学之简单入门
Nov 19 Javascript
举例讲解如何判断JavaScript中对象的类型
Apr 22 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
May 02 Javascript
node.js操作MongoDB的实例详解
Oct 11 Javascript
使用use注册Vue全局组件和全局指令的方法
Mar 08 Javascript
vue利用axios来完成数据的交互
Mar 23 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
Nov 30 Javascript
详解django模板与vue.js冲突问题
Jul 07 Javascript
Vue开发中遇到的跨域问题及解决方法
Feb 11 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
Mar 03 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 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
详解微信UnionID作用
2019/05/15 Javascript
Vue实现简单计算器
2021/01/20 Vue.js
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
浅析Python中的多条件排序实现
2016/06/07 Python
python获取中文字符串长度的方法
2018/11/14 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
python数据抓取3种方法总结
2021/02/07 Python
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
室内设计专业个人的自我评价
2013/12/18 职场文书
大学新生欢迎词
2014/01/10 职场文书
《春天来了》教学反思
2014/04/07 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
岁月神偷观后感
2015/06/11 职场文书
从原生JavaScript到React深入理解
2022/07/23 Javascript