Intro

后端Java可以调用java.util.UUID.randomUUID() 生成一个随机的UUID。
可是前端JavaScript有没有自带的API用于生成UUID/GUID呢?

以下分三种情况。

  • 仅用于浏览器控制台Console Crypto.randomUUID()
  • NodeJS开发环境(可以自由使用各类开源的package) mockjs uuid
  • 任意JS环境,自己封装一个简单的JavaScript函数。

浏览器控制台

var currentUUID = window.crypto.randomUUID();
console.log(currentUUID);

在这里插入图片描述其本质是利用了 Crypto 这个类。
MDN Crypto.randomUUID()

但是要注意:这是一个Web API,它依赖于浏览器环境。
也就是说,你可以在不同种类的浏览器的控制台/Console上自由使用该API来生成UUID。
要有浏览器环境!

注意浏览器兼容情况:只有IE不支持该API(又是IE)。
在这里插入图片描述不过别担心,在2022-06-15以后做前端开发你都不用再担心IE浏览器的兼容性问题了:IE即将停止支持/退役
在这里插入图片描述

NodeJS环境

在node环境下开发,有海量的node package可以使用。这些包都可以在 https://www.npmjs.com/ 找到。
官方开源的/个人上传的,都有。比如说我就曾经上传过勇于获取随机的 useragent HTTP请求头的工具包:
https://www.npmjs.com/package/useragent-tool
在这里插入图片描述
我们现在的需求是:有一个方法可以返回随机的UUID/GUID。
先在 npmjs 中去找。
我就找到了两个: modejsuuid

  • mockjs
// npm install mockjs

var Mock = require("mockjs");
var Random = Mock.Random;

var currGuid = Random.guid()
console.log(currGuid);

在这里插入图片描述

在这里插入图片描述

// npm i uuid

const { v4: uuidv4 } = require('uuid');
console.log(uuidv4());

在这里插入图片描述

纯JavaScript函数实现

如果没有现成的轮子,那就自己造一个轮子出来用!

function uuid() {
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i < 36; i++) {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
    s[8] = s[13] = s[18] = s[23] = "-";

    var uuid = s.join("");
    return uuid;
}

uuid();

在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐