如何在node.js中生成base62 UUID?

Dár*_*rio 2 javascript uuid base62 node.js

我正在寻找一个在node.js中生成base62 UUID的解决方案.我想避免的base64,我打算创建基于这些的UUID和像字符的文件夹=,\,-,_(如在一些实现)不是人类/文件系统友好.

Base62还具有比典型的v4 UUID更短的优势(在我的上下文中).

更新(为了清楚起见):我之前应该说我已经尝试过使用base62模块,但这并不能解决我的问题,因为base62javascript整数中的数字只能精确到52位,而UUID有128位.

Dár*_*rio 6

这是一个全面的答案:

解决方案A:base-x+node-uuid

灵感来自@ Jonathan先前的评论.

使用node-uuid生成UUID,然后使用base-x对其进行编码:

var buf = new Buffer(16);
var uuid = Uuid.v4(null, buf);
var uuidB62 = baseX.encode(uuid);
// -> 71jbvv7LfRKYp19gtRLtkn
Run Code Online (Sandbox Code Playgroud)

base-x 非常快,所以这是最高性能的解决方案.

解决方案B: uuid-base62

在了解之前,base-x我继续为base62编码(b62)创建了一个模块,为base62 UUID生成创建了另一个模块:uuid-base62:

var uuidB62 = uuidBase62.v4();  // -> 2qY9COoAhfMrsH7mCyh86T
Run Code Online (Sandbox Code Playgroud)

这是没有多余装饰的解决方案.目前它没有A那么快,因为b62速度要慢得多,但我打算用它替换它base-x.

更新: uuid-base62已更新使用base-x.