重要声明: 本项目 @voya-kit/snow-id
基于的 snowflake-id 进行了导入语法改造与优化。我们不仅保留了原项目的精髓,还全面拥抱了现代JavaScript生态,确保了对 CommonJS (CJS) 和 ECMAScript Modules (ESM) 两种模块化标准的支持。
- 时间基底: 利用时间戳作为ID的基础部分,确保ID的有序性和唯一性。
- 高并发友好: 通过机器标识和序列号的设计,支持大规模分布式系统下的高效并行生成。
-
精准控制: 提供自定义机器ID (
mid
) 和时间偏移 (offset
) 参数,适应多样化的部署环境。 - 兼容性卓越: 支持JavaScript的整数精度限制,生成的ID以字符串形式输出,无缝对接数据库bigint类型。
- 最新语法兼容: 全面升级导入语法,适配现代开发者的习惯与需求。
执行以下命令,即可将 @voya-kit/snow-id
添加到您的项目依赖中:
npm install @voya-kit/snow-id --save
对于传统的Node.js应用或者那些仍使用CJS模块系统的项目,您可以这样导入:
const { Snowflake } = require('@voya-kit/snow-id');
// 初始化Snowflake实例
const snowflake = new Snowflake(
{ mid: 1, // 示例值,建议根据实际情况设置唯一机器标识
offset: 0, // 可选,时间偏移量,用于调整ID起始时间
}
);
随着JavaScript模块标准的发展,越来越多的新项目倾向于使用ESM。如果您处于这样的开发环境,请使用以下导入语句:
import { Snowflake } from '@voya-kit/snow-id';
// 初始化Snowflake实例
const snowflake = new Snowflake({
mid: 1, // 示例值,建议根据实际情况设置唯一机器标识
offset: 0, // 可选,时间偏移量,用于调整ID起始时间
})
无论是CJS还是ESM导入方式,生成ID的逻辑保持一致:
const id1 = snowflake.generate(); // 生成如 "285124269753503744" 的唯一ID
const id2 = snowflake.generate(); // 每次调用生成不同的ID
支持CJS或ESM的JavaScript项目中轻松集成并利用 @voya-kit/snow-id
来生成高性能、高可用的唯一标识符。