ES6模块化
基本规则
- 1:每一个模块只加载一次, 每一个JS只执行一次, 如果下次再去加载同目录下同文件,直接从内存中读取。 一个模块就是一个单例,或者说就是一个对象;
- 2:每一个模块内声明的变量都是局部变量,不会污染全局作用域;
- 3:模块内部的变量或者函数可以通过export导出;
- 4:一个模块可以导入别的模块
语法
导出:return、exports、ES6->export
导入:require、ES6->import
<!--index.html-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script src="aaa.js" type="module"></script>
<script src="bbb.js" type="module"></script>
</body>
</html>
/*aaa.js*/
let name = "張三";
let age = 18;
let flag = true;
if (flag) {
console.log(name + "-" + age);
}
export {
name, age, flag
}
export function num(num1, num2) {
return num1 * num2;
}
export class Person{
run(name){
return name+"在奔跑!";
}
}
/*bbb.js*/
import {name,age,flag} from "./aaa.js";
import {num} from "./aaa.js";
import {Person} from "./aaa.js";
if(flag){
console.log(name+"-"+age);
}
console.log(num(1,3));
const p1 = new Person();
console.log(p1.run(name));
/*导入所有,起别名aaa*/
import * as aaa from "./aaa.js";
console.log("aaa.name:"+aaa.name);
export default:
某些情况下,一个模块中包含某个功能,我们并不想给此功能起名字,而让导入者自己来命名,这是就可以使用export default
注:同一个模块中只可存在一个export default
/*导入所有,起别名aaa*/
import * as aaa from "./aaa.js";
- 按需导入
- 默认导入
- 全部导入