npm的node-uuid和uuid

3,525 阅读2分钟

[TOC]

uuid

功能

生成唯一的一个字符串 至于唯一性,我也怀疑过,参考[1],主要有5种用法

  • (1)基于时间的
  • (2)DCE安全的
  • (3)基于名字的
  • (4)随机的
  • (5)基于名字的(SHA1)

uuid模块

用法

参考[1],有5种用法

  • v1:基于时间的
> uuid.v1()
'3be65050-3a6c-11ea-9a1c-a770f4b5f889'
  • v2:DCE安全的 测试的时候说找不到,没去求证一下咋样,暂时不需要
  • v3:基于名字的 用相同的名字,会生成相同的uuid出来
> var v3 = require('uuid/v3')
undefined
> console.log(v3('Hello, World!', MY_NAMESPACE1));
114e1c3c-a1c9-34d4-95e3-9038ea162be9
undefined
>
  • v4:随机的
> uuid.v4()
'9f2e4328-c171-4c83-b063-71cb6bae9cfa'
  • v5:基于名字的(SHA1)
> var v5 = require('uuid/v5')
undefined
> console.log(v5('Hello, World!', MY_NAMESPACE1));
92d6b5a2-22da-5c5c-b93b-0a59d45a961a
undefined
> console.log(v5('Hello, World!', MY_NAMESPACE1));
92d6b5a2-22da-5c5c-b93b-0a59d45a961a

node-uuid模块

> var nodeuuid = require('node-uuid')
undefined
> nodeuuid.v1()
'83336050-3a6d-11ea-9541-6313a4ec04df'
> nodeuuid.v2()
Thrown:
TypeError: nodeuuid.v2 is not a function
> nodeuuid.v3()
Thrown:
TypeError: nodeuuid.v3 is not a function
> nodeuuid.v4()
'd66bbcb7-d359-4ff2-a5ba-094926a8a2f1'
> nodeuuid.v5()
Thrown:
TypeError: nodeuuid.v5 is not a function
> var nodeuuidv3 = require('node-uuid/v3')
Thrown:
E:\work\git\MiniServer\miniserver\node_modules\node-uuid\v3.js:7
  if (typeof(name) != 'string) {
                      ^^^^^^^^^^

SyntaxError: Invalid or unexpected token
>

小结

  • 根据不同的功能选择不同的用法 (1)比如用户ID这种,最好就用v3/v5,因为如果作为唯一key的话,必须要是一样的; (2)如果是临时的,可以用v1或者v4的,比如在处理消息队列的时候,你需要一个uuid临时处理一次请求/响应的功能,可以生成一个功能,用完后面就不需要了
  • node-uuid只支持v1和v5,而想要v3或者v5的话,用uuid模块

参考

[1]UUID是如何保证唯一性的? [2]TypeError: uuid_1.v5 is not a function