前端项目中生成唯一标识

643 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

前端页面中经常会使用一串值作为唯一的标识,有些时候这个标识并不用于表示具体的含义,比如 id、key 值或者生成唯一的文件名(防止重名等)。接下来要提到的 UUID 就是生成唯一标识的方法之一。

UUID — Universally Unique Identifier,含义是通用唯一识别码(也叫做全局唯一标识)

一个 UUID 是由32位16进制数组成,大小为128bit,生成一串 UUID 可以使用随机数、伪随机数、 MAC 地址、时间戳、命名空间等方式来保证生成的字符串的唯一性(生成的过程会涉及到,但并不是全部会用到)。

具体格式:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,如:'9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'

'-'将上面的一串字符串分为 8-4-4-4-8 长度的五段子字符串

使用方法

以 Vue 项目为例,使用方法如下:

  1. 安装以及引入
npm install uuid --save
import { v4 } from 'uuid';
// 或者
// import { v4 as uuidv4 } from 'uuid';

注:如果安装引入后依旧提示无法找到或者未定义等问题,一般重新安装即可正常使用

  1. 使用

v4()函数执行后即可生成一串带’-’连接的字符串

UUID生成的会比较长,有需要的时候可以去掉 UUID 中的连接线,具体操作如下:

const key = v4().replaceAll('-', '')
// 或者执行: uuidv4()

UUID 的 API

image.png

具体操作可参照 UUID 官方

常用的生成 UUID 的方式

生成 UUID 大致有四种不同算法的版本,分别是基于不同原理进行字符串的生成。前面的 uuidv4() 就是其中的一种方式。

比较常用的是随机数版本的实现:

function generateKey() {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
        var r = Math.random() * 16 | 0,
            v = c == 'x' ? r : (r & 0x3 | 0x8);
        return v.toString(16);
    });
}
generateKey()

或是这样的形式:

function uuid() {
    function S4() {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    }
    return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}
uuid()

执行函数后会生成一串 UUID ,生成时也可以指定字符串的长度。