ES6的模块自动开启严格模式,不管你有没有在模块头部加上use strict;

模块中可以导入和导出各种类型的变量,如函数,对象,字符串,数字,布尔值,类等。

每个模块都有自己的上下文,每一个模块内声明的变量都是局部变量,不会污染全局作用域。

每一个模块只加载一次(是单例的), 若再去加载同目录下同文件,直接从内存中读取。

1.构成

export和importexport: 命令用于规定模块的对外接口。
import:命令用于输入其他模块提供的功能

一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。
如果希望外部能够读取模块内部的某个变量,就必须使用export关键字输出该变量

1.1导出

//module/index.js
export const name = 'zhangsan ';
export const age = 18;
export const color = 'red ';
export const sayName = function() {
    console.log(fristName);
}

//也可以这样
const name = 'zhangsan ';
const age = 18;
const color = 'red ';
const sayName = function() {
    console.log(fristName);
}
export {name,age,color,sayName}

1.2导入

//main.js
import {name,age,color,sayName,fn} from './modules/index.js';
-----------------------------------------------------------------------------------

as关键字
import * as obj from './modules/index.js';
console.log(obj);

1.3export-default

只能使用一次
在其它模块加载该模块时,import命令可以为该匿名函数指定任意名字

export:

//export-default.js
export default function(){
    console.log('foo');
}

export function add(){
    console.log('add')
}
import:

//import-default.js
import customName from './export-default.js'
customNmae();//foo

如果想在一条·import语句中,同时输入默认方法和其他接口,可以这样写

import:

//用逗号链接
import customName,{add} from 'export-default.js'