一、安装依赖

npm install uuid

二、脚本引入

(一)ES6 module syntax

import { v4 as uuidv4 } from 'uuid';
uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'

(二)CommonJS

const { v4: uuidv4 } = require('uuid');
uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
var uuid = require('uuid'); // 唯一uuid
uuid.v4().replace(/\-/g, '')

三、Command Line

UUIDs can be generated from the command line using uuid.

$ uuid
ddeb27fb-d9a0-4624-be4d-4615062daed4
The default is to generate version 4 UUIDS, however the other versions are supported. Type uuid --help for details:$ uuid --helpUsage:uuiduuid v1uuid v3 <name> <namespace uuid>uuid v4uuid v5 <name> <namespace uuid>uuid --helpNote: <namespace uuid> may be "URL" or "DNS" to use the corresponding UUIDs
defined by RFC4122

四、API

API Summary

函数方法 功能 备注
uuid.NIL The nil UUID string (all zeros) New in uuid@8.3
uuid.parse() Convert UUID string to array of bytes New in uuid@8.3
uuid.stringify() Convert array of bytes to UUID string New in uuid@8.3
uuid.v1() Create a version 1 (timestamp) UUID
uuid.v3() Create a version 3 (namespace w/ MD5) UUID
uuid.v4() Create a version 4 (random) UUID
uuid.v5() Create a version 5 (namespace w/ SHA-1) UUID
uuid.validate() Test a string to see if it is a valid UUID New in uuid@8.3
uuid.version() Detect RFC version of a UUID New in uuid@8.3
  • uuid.NIL
    nil UUID字符串(全零)。
    示例:
import { NIL as NIL_UUID } from 'uuid';NIL_UUID; // ⇨ '00000000-0000-0000-0000-000000000000'
  • uuid.parse(str)
    将UUID字符串转换为字节数组
字段 说明
str A valid UUID String
returns Uint8Array[16]
throws TypeError if str is not a valid UUID

注意:parse()和stringify()使用的字节数组中的值的顺序遵循UUID字符串中十六进制对的从左往右的顺序。 如下例所示。

示例:

import { parse as uuidParse } from 'uuid';// Parse a UUID
const bytes = uuidParse('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b');// Convert to hex strings to show byte order (for documentation purposes)
[...bytes].map((v) => v.toString(16).padStart(2, '0')); // ⇨ // [//   '6e', 'c0', 'bd', '7f',//   '11', 'c0', '43', 'da',//   '97', '5e', '2a', '8a',//   'd9', 'eb', 'ae', '0b'// ]

其他更多关于uuid库的方法的使用,具体参考npm官网:https://www.npmjs.com/package/uuid

生成uuid字符串后将其中的-去掉

当使用nodejs中的uuid库生成了1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed这种格式的uuid字符串后,有时候我们需要把中间的-字符去掉,这时候可以使用stringreplace方法:

const { v4: uuidv4 } = require('uuid');
let strUUID = uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
let strUUID2 = strUUID.replace(/-/g, ''); // 去掉-字符,使用空格代替

uuid.stringify(arr[, offset])

Convert array of bytes to UUID string

arr Array-like collection of 16 values (starting from offset) between 0-255.
[offset = 0] Number Starting index in the Array
returns String
throws TypeError if a valid UUID string cannot be generated

Note: Ordering of values in the byte arrays used by parse() and stringify() follows the left ↠ right order of hex-pairs in UUID strings. As shown in the example below.

Example:

import { stringify as uuidStringify } from 'uuid';const uuidBytes = [0x6e,0xc0,0xbd,0x7f,0x11,0xc0,0x43,0xda,0x97,0x5e,0x2a,0x8a,0xd9,0xeb,0xae,0x0b,
];uuidStringify(uuidBytes); // ⇨ '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'

uuid.v1([options[, buffer[, offset]]])

Create an RFC version 1 (timestamp) UUID

[options] Object with one or more of the following properties:
[options.node ] RFC "node" field as an Array[6] of byte values (per 4.1.6)
[options.clockseq] RFC "clock sequence" as a Number between 0 - 0x3fff
[options.msecs] RFC "timestamp" field (Number of milliseconds, unix epoch)
[options.nsecs] RFC "timestamp" field (Number of nanseconds to add to msecs, should be 0-10,000)
[options.random] Array of 16 random bytes (0-255)
[options.rng] Alternative to options.random, a Function that returns an Array of 16 random bytes (0-255)
[buffer] Array | Buffer If specified, uuid will be written here in byte-form, starting at offset
[offset = 0] Number Index to start writing UUID bytes in buffer
returns UUID String if no buffer is specified, otherwise returns buffer
throws Error if more than 10M UUIDs/sec are requested

Note: The default node id (the last 12 digits in the UUID) is generated once, randomly, on process startup, and then remains unchanged for the duration of the process.

Note: options.random and options.rng are only meaningful on the very first call to v1(), where they may be passed to initialize the internal node and clockseq fields.

Example:

import { v1 as uuidv1 } from 'uuid';uuidv1(); // ⇨ '2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d'

Example using options:

import { v1 as uuidv1 } from 'uuid';const v1options = {node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],clockseq: 0x1234,msecs: new Date('2011-11-01').getTime(),nsecs: 5678,
};
uuidv1(v1options); // ⇨ '710b962e-041c-11e1-9234-0123456789ab'

uuid.v3(name, namespace[, buffer[, offset]])

Create an RFC version 3 (namespace w/ MD5) UUID

API is identical to v5(), but uses "v3" instead.

备注: Per the RFC, "If backward compatibility is not an issue, SHA-1 [Version 5] is preferred."

uuid.v4([options[, buffer[, offset]]])

Create an RFC version 4 (random) UUID

[options] Object with one or more of the following properties:
[options.random] Array of 16 random bytes (0-255)
[options.rng] Alternative to options.random, a Function that returns an Array of 16 random bytes (0-255)
[buffer] Array | Buffer If specified, uuid will be written here in byte-form, starting at offset
[offset = 0] Number Index to start writing UUID bytes in buffer
returns UUID String if no buffer is specified, otherwise returns buffer

Example:

import { v4 as uuidv4 } from 'uuid';uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'

Example using predefined random values:

import { v4 as uuidv4 } from 'uuid';const v4options = {random: [0x10,0x91,0x56,0xbe,0xc4,0xfb,0xc1,0xea,0x71,0xb4,0xef,0xe1,0x67,0x1c,0x58,0x36,],
};
uuidv4(v4options); // ⇨ '109156be-c4fb-41ea-b1b4-efe1671c5836'

uuid.v5(name, namespace[, buffer[, offset]])

Create an RFC version 5 (namespace w/ SHA-1) UUID

name String | Array
namespace String | Array[16] Namespace UUID
[buffer] Array | Buffer If specified, uuid will be written here in byte-form, starting at offset
[offset = 0] Number Index to start writing UUID bytes in buffer
returns UUID String if no buffer is specified, otherwise returns buffer

Note: The RFC DNS and URL namespaces are available as v5.DNS and v5.URL.

Example with custom namespace:

import { v5 as uuidv5 } from 'uuid';// Define a custom namespace.  Readers, create your own using something like
// https://www.uuidgenerator.net/
const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341';uuidv5('Hello, World!', MY_NAMESPACE); // ⇨ '630eb68f-e0fa-5ecc-887a-7c7a62614681'

Example with RFC URL namespace:

import { v5 as uuidv5 } from 'uuid';uuidv5('https://www.w3.org/', uuidv5.URL); // ⇨ 'c106a26a-21bb-5538-8bf2-57095d1976c1'

uuid.validate(str)

Test a string to see if it is a valid UUID

str String to validate
returns true if string is a valid UUID, false otherwise

Example:

import { validate as uuidValidate } from 'uuid';uuidValidate('not a UUID'); // ⇨ false
uuidValidate('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); // ⇨ true
Using validate and version together it is possible to do per-version validation, e.g. validate for only v4 UUIds.import { version as uuidVersion } from 'uuid';
import { validate as uuidValidate } from 'uuid';function uuidValidateV4(uuid) {return uuidValidate(uuid) && uuidVersion(uuid) === 4;
}const v1Uuid = 'd9428888-122b-11e1-b85c-61cd3cbb3210';
const v4Uuid = '109156be-c4fb-41ea-b1b4-efe1671c5836';uuidValidateV4(v4Uuid); // ⇨ true
uuidValidateV4(v1Uuid); // ⇨ false

uuid.version(str)

Detect RFC version of a UUID

str A valid UUID String
returns Number The RFC version of the UUID
throws TypeError if str is not a valid UUID

Example:

import { version as uuidVersion } from 'uuid';uuidVersion('45637ec4-c85f-11ea-87d0-0242ac130003'); // ⇨ 1
uuidVersion('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); // ⇨ 4

nodejs生成唯一uuid相关推荐

  1. js 生成唯一uuid

    全局唯一标识符(GUID,Globally Unique Identifier)也称作UUID(Universally Unique IDentifier) .GUID是一种由算法生成的二进制长度为1 ...

  2. nodejs生成UID(唯一标识符)——node-uuid模块

    nodejs生成UID(唯一标识符)--node-uuid模块 unique identifier 惟一标识符        -->> uid 在项目开发中我们常需要给某些数据定义一个唯一 ...

  3. UUID.randomUUID()生成唯一识别码

    目录 1.UUID 的概念 2.UUID的组成 3.UUID.randomUUID()使用 1.UUID 的概念 UUID(Universally Unique Identifier):通用唯一识别码 ...

  4. python 使用UUID库生成唯一ID

      首先导包: import uuid uuid1(): # make a UUID based on the host ID and current time     #  基于MAC地址,时间戳, ...

  5. Java中使用UUID工具类生成唯一标志防止重复

    场景 UUID 是指Universally Unique Identifier,翻译为中文是通用唯一识别码,UUID 的目的是让分布式系统中的所有元素都能有唯一的识别信息. 在某些场景下需要给数据库中 ...

  6. python namespace unique_Python使用uuid库生成唯一标识ID

    uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现.有时也称guid(global unique identifier). ...

  7. uuid java 重复_Java中使用UUID工具类生成唯一标志防止重复

    import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.secur ...

  8. java uuid 随机生成唯一序列号

    UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.按照开放软件基金会(OSF)制定的标准计算, ...

  9. 10.算法进阶之分布式篇——分布式环境下如何生成唯一ID——UUID

    UUID--全局唯一ID--universally unique identifie. 一般来说常用的基于时间进行排序,因为时间是自然递增的.但是全局唯一ID的两个核心要求是: 全局唯一 粗略有序 在 ...

最新文章

  1. 微软云服务再添新产品,这次来自两位华裔女科学家创办的AI公司
  2. 知识图谱之语言计算与信息抽取
  3. javamail 解码 base64 html格式邮件_python使用QQ邮箱实现自动发送邮件
  4. 五个角度,来梳理下产品经理的分类和职业发展方向
  5. Linux netstat命令详解和使用例子(显示各种网络相关信息)
  6. java合并两个数组_「JAVA」两个数组的交集—力扣每日一题(一)
  7. tf.contrib.rnn.static_rnn与tf.nn.dynamic_rnn区别
  8. 让你的模型acc更上一层楼:模型trick和数据方法总结
  9. php 实现顺序查找
  10. java 连接hadoop集群_hadoop集群访问——Hadoop客户端访问、Java API访问
  11. 什么是视图?作用是什么?
  12. echart折线图删除_echart清空折线图数据
  13. 图数据库|如何从零到一构建一个企业股权图谱系统
  14. mysql:设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)表(四)所示
  15. 搜狗的2019年:录音笔开辟智能硬件新战场,语言AI要在C端找准点
  16. 中望3D 2021 自动缩放基准面大小
  17. 优秀的免费高清图片素材网站推荐
  18. Windows与网络基础:Windows基本命令-目录文件操作
  19. 计算机英语这门课上后感1000,英语教师听课心得体会作文
  20. java求多项式回归_通过LINEST进行多项式回归(Polynomial Regression via LINEST)

热门文章

  1. 测试开发常问面试题整理-----网络篇
  2. 通过命令运行jar包(指定外部依赖jar包)
  3. C语言实现逆波兰表达式计算函数(含浮点型、整型混合运算)
  4. 【小迪实地】Webdav安全配置相关与漏洞利用
  5. 记录:Java序列化
  6. jQuery之.each( function(index, Element) )
  7. 人生效率手册:如何卓有成效地过好每一天--By张萌姐姐--读书笔记
  8. linux 图形界面无法弹出,xmanager无法弹出图形化界面。
  9. 百度Java面试题前200页和答案
  10. 【vue3源码】十四、认识vnode中的shapeFlag和patchFlag属性