模块化开发
- 一、模块化发展的过程
- 二、ES Modules 特性
- 三、ES Modules 导入导出
-
- 1. export import 后面的 {}
- 2. export {} 与 export default 的区别
- 3. export 导出是栈内存中的变量(原始数据类型存储的是值,对象数据类型存储的是堆内存的引用地址)
- 4. import 导入的成员是一个只读的成员,不能够修改值
- 5. import 导入路径相关
- 6. 如果不需要导入成员,只想执行所导入的模块可以省略{}, 例如可以直接写:import './module.js'
- 7. import * as 别名 from './module.js', 可以导出 module 模块 下的所有成员
- 8. 如何动态的加载模块,通过 调用全局的 import(文件路径) ,该import方法返回一个promise对象。通过then方法可以取到导出的值。
- 9. 同时导入默认成员与命名成员写法可以有两种
- 10. 可以导入导出一起使用。
- 四、ES Modules 浏览器兼容性问题
- 五、ESModules 在 Node 环境中的支持
- 六、ES Modules 在 Node 环境中与 CommonJS 的交互
- 七、ES Modules 在 Node 环境中与 CommonJS 的差异
- 八、通过babel也可以在node环境中使用ESM
一、模块化发展的过程
模块化在不同环境的使用:
浏览器环境: ES Modules 模块化规范
Node环境: CommonJS 模块化规范
二、ES Modules 特性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- script标签执行时立即执行加载脚本, defer 属性会在页面渲染完之后执行脚本 -->
<!-- 给script标签 设置type = module 来告知当前script标签中的代码采用ESM的规范来执行 -->
<!-- <script type="module"></script> -->
<!-- ESM的基本特性 -->
<!-- 1. 自动采用严格模式 -->
<script type="module">
console.log(this) // undefined
</</