ES6
的模块自动开启严格模式,不管你有没有在模块头部加上use strict;
。
模块中可以导入和导出各种类型的变量,如函数,对象,字符串,数字,布尔值,类等。
每个模块都有自己的上下文,每一个模块内声明的变量都是局部变量,不会污染全局作用域。
每一个模块只加载一次(是单例的), 若再去加载同目录下同文件,直接从内存中读取。
1.构成
export和import
export
: 命令用于规定模块的对外接口。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'