有关 import export 的介绍

export用于对外输出本模块(一个文件可以理解为一个模块)变量的接口

也就是说使用export命令定义了模块的对外接口以后,其他JS文件就可以通过import命令加载这个模块(文件)

  • export {xxx,xx}
//导出(a.js)
var sex="boy";
var echo=function(value){
  console.log(value)
}
export {sex,echo}  
//导入(b.js)
import {sex,echo} from "./a.js" 

通过向大括号中添加sex,echo变量并且export输出,就可以将对应变量值以sex、echo变量标识符形式暴露给其他文件而被读取到。
不能写成export sex这样的方式,如果这样就相当于export “boy”,外部文件就获取不到该文件的内部变量sex的值,因为没有对外输出变量接口,只是输出的字符串。

  • export default
//导出(a.js)
var sex="boy";
export default sex
//导入(b.js)
import any from "./a.js" 
console.log(any)  // boy

原本直接export sex外部是无法识别的,加上default就可以了.但是一个文件内最多只能有一个export default。

其实此处相当于为sex变量值"boy"起了一个系统默认的变量名default,自然default只能有一个值,所以一个文件内不能有多个export default。

本质上,a.js文件输出一个叫做 default 的变量,然后系统允许你为它取任意名字。所以可以为import的模块起任何变量名,且不需要用大括号包含

注意:
export
  • 暴露的对象必须加{},它表示暴露的是一个接口。如果不加的话,它表示暴露的是一个值,这样就会报错。
  • as关键字,可以给暴露的对象换名字,同一个对象可以多次使用as关键字,用不同的名字暴露出去。
  • export命令必须处于模块的顶层,位置无所谓。
  • export暴露的对象是动态绑定关系,如果发生变化,外部引用也会变化。
import
  • 引用的文件可以省略.js后缀。
  • 可以使用as关键字。
  • import具有变量提升的效果,所以放在引用的对象后面也无所谓。
  • import接收对象是否用花括号括起来,要看对象的暴露方式。默认输出就不用加花括号,如果是export,就要加花括号。
export default
  • export default命令在一个模块中只能使用一次,因为是默认暴露值,所以默认的输出值只能是唯一。
  • 引用的时候不需要知道暴露的对象名,可以给他起随意的名字。
  • 引用的时候不需要加花括号。

你可能感兴趣的:(ES6)