起因:
昨天做项目,时间紧急,有些问题没有深入, 比如 js 中,import 语句的具体用法。
为什么我不能用:
require(‘axios’);
import axios from ‘axios’; // 而用 import 就可以
今天再查查看,记录一下:
1. import 和 require 的区别
下面是 import
和 require
两种模块导入方式的主要区别:
特性 | import (ES6 Modules) | require (CommonJS) |
---|---|---|
规范 | ECMAScript 2015 (ES6) | CommonJS (Node.js) |
使用环境 | 现代浏览器、Node.js (v12+) | Node.js、浏览器 (通过工具转换) |
导入方式 | 静态分析,编译时解析 | 动态分析,运行时解析 |
导入语法 | 使用 import 关键词 | 使用 require 函数 |
默认导出 | 使用 export default | 使用 module.exports 或 exports.default |
命名导出 | 使用 export 关键词 | 使用 module.exports 或 exports 对象 |
导入重命名 | 支持,使用 { export as alias } | 不直接支持,需要在导入后重命名 |
循环依赖 | 不支持 | 支持 |
模块加载 | 只加载声明的部分 | 加载整个模块 |
异步加载 | 支持异步加载 | 同步加载 |
树摇 (Tree Shaking) | 支持,未使用的代码可以被移除 | 不直接支持,需要工具处理 |
导入JSON或CSS | 直接支持 | 需要额外的处理 |
动态导入 | 支持 |