前端的模块化有哪些呢?
es5中用的模块:
- amd规范
- cmd规范
es6之后: - es6模块化
- 每个 js 文件都是一个独立的模块
- 导入其他模块使用 import 关键字
- 向外共享(导出)模块使用 export 关键字
- commonJS规范(nodejs)
- 导入其他模块使用 require 关键字
- 向外共享(导出)模块使用 module.exports关键字
让nodejs支持ES6模块
node.js 中默认支持 CommonJS 模块化规范,如果想基于 node.js 体验与学习 ES6 的模块化语法,需要按照如下两个步骤进行配置
- 确保安装了 v13.0.0 或更高版本的 node.js
- 在 package.json 的根节点中添加
"type": "module"节点
注意事项: 配置之后,则只能使用ES6模块化语法,不能再使用CommonJS语法了
文件结构
根目录
├── index.js # 主页需要用到的js代码
└── tool.js # 为整个项目提供公共方法
默认导入导出
导出语法:export default 默认导出的成员
导入语法:import 接收名称 from 导入的模块路径
注意事项:
- 每个模块中,只允许使用唯一的一次 export default
- 默认导入时的接收名称可以任意名称,只要是合法的成员名称即可
按需导入导出
按需导出的语法: export const s1 = 10
按需导入的语法: import { 按需导入的名称 } from '模块路径'
注意事项:
- 每个模块中可以有多次按需导出
- 按需导入的成员名称必须和按需导出的名称保持一致
- 按需导入时,可以使用 as 关键字进行重命名
默认导出和整体导出一起使用
拓展:让chrome浏览器支持es6模块化
文件目录
- index.html # 引入 index.js
- index.js # 引入 tool.js
- tool.js
index.html
<!DOCTYPE html>
<html lang="zh">
注意这里的module
<script type="module" src="./index.js"></script>
</html>
index.js
import {a,b} from './tool.js'
console.log(a,b)
tool.js
export const a = {name:'张三'};
export const b = 2;