ES Module (import) 支持说明
版本: 1.0
最后更新: 2025-01-02
📑 目录
- 📋 概述
- 🎯 支持的导入方式
- 📦 Package.json 配置
- 🚀 使用示例
- 📚 导入方式对比
- 🔧 可用的导出
- 🧪 测试 ES Module 支持
- 💡 最佳实践
- 🎯 迁移指南
- ⚠️ 注意事项
- 📊 兼容性矩阵
- 🎉 总结
�📋 概述
monSQLize 现已完全支持 ES Module (import) 和 CommonJS (require) 两种导入方式。
🎯 支持的导入方式
方式 1: CommonJS (require) ✅
方式 2: ES Module (import) ✅ 新增
📦 Package.json 配置
monSQLize 的 package.json 已配置双模式支持:
🚀 使用示例
CommonJS 项目
文件: app.js
运行:
ES Module 项目
文件: app.mjs 或 app.js (如果 package.json 中有 "type": "module")
运行:
📚 导入方式对比
默认导出
命名导出
混合导入
🔧 可用的导出
默认导出
MonSQLize(主类)
命名导出
MonSQLize(主类,命名导出)Logger(日志工具)MemoryCache(缓存类)createRedisCacheAdapter(Redis 适配器)TransactionManager(事务管理器)CacheLockManager(缓存锁管理器)DistributedCacheInvalidator(分布式缓存失效器)
🧪 测试 ES Module 支持
运行 ESM 测试
测试内容
- ✅ 默认导出 (
import MonSQLize) - ✅ 命名导出 (
import { Logger }) - ✅ 实例创建
- ✅ 连接和基本操作
💡 最佳实践
1. 选择合适的导入方式
使用 CommonJS 当:
- 项目是传统 Node.js 项目
- 需要兼容旧版 Node.js (< 14.x)
- 使用的其他库主要是 CommonJS
使用 ES Module 当:
- 新项目,使用现代 JavaScript
- 需要更好的 Tree-shaking 支持
- 使用 TypeScript 或前端构建工具
2. TypeScript 支持
monSQLize 提供完整的 TypeScript 类型定义:
3. 在 package.json 中声明模块类型
使用 ES Module:
使用 CommonJS (默认):
🎯 迁移指南
从 CommonJS 迁移到 ES Module
步骤 1: 修改 package.json
步骤 2: 修改文件扩展名
.js保持不变(如果 package.json 设置了 "type": "module")- 或重命名为
.mjs
步骤 3: 修改导入语句
步骤 4: 修改导出语句
步骤 5: 使用顶层 await
⚠️ 注意事项
1. 文件扩展名
- ES Module: 使用
.mjs或.js(如果 package.json 设置了 "type": "module") - CommonJS: 使用
.cjs或.js(默认)
2. __dirname 和 __filename
ES Module 中不可用,需要替代方案:
3. require() 不可用
ES Module 中不能使用 require(),必须使用 import:
4. 动态导入
📊 兼容性矩阵
🎉 总结
✅ monSQLize 现已支持
- CommonJS (require) - 传统方式,兼容性好
- ES Module (import) - 现代方式,更好的优化
✅ 特性
- 🔄 双模式支持,无缝切换
- 📦 正确的 package.json 配置
- 🧪 完整的测试覆盖
- 📚 详细的文档说明
- 💡 最佳实践指导
✅ 用户无需修改代码
- 现有 CommonJS 项目无需改动
- 新项目可以直接使用 ES Module
- 两种方式功能完全一致
版本要求: Node.js >= 14.x (ES Module 完整支持)
推荐版本: Node.js 18.x 或 20.x (LTS)