说明:foo用于举例代表所有类型:
1.文件中只要出现import或export就会被视为一个模块
2.模块内部变量都是局部变量,外部无法访问,需要导出访问
3.import语法会提升到头部先加载
4.多个文件中多次import一个大型库是无害的,模块加载除了第一次都是从内存请求,多次import一个模块中的变量将会被自动合并为一次
5.导出单个变量必须使用声明导出export let foo或花括号导出{foo},导出多个变量使用{foo,foo2}
6.导入使用import {foo,foo2},顺序可以和导出不同
7.一个模块中可以多次导入和导出
8.导入导出时可以用as起别名
9.import的变量foo不允许直接修改,但可以修改变量的属性foo.name="zzy"
10.import时不能使用表达式
11.import可以同时导入默认变量和其它变量import React,{Component}
12.export default只能出现一次,不能导出声明变量,且导入和导出时不能使用花括号{}
13.imoprt * as M语法如果导入了包含default的模块,使用M.default访问default变量
14.import与require(…)都能加载模块,都是同步的,import便于构建工具了解静态依赖关系,存在代码提升,require是运行时加载,用于业务上按需加载