深入剖析vscode工具函数(四)idGenerator

lxf2023-05-02 20:32:50

深入剖析vscode工具函数(四)idGenerator

vscode中的idGenerator

export class IdGenerator {

	private _prefix: string;
	private _lastId: number;

	constructor(prefix: string) {
		this._prefix = prefix;
		this._lastId = 0;
	}

	public nextId(): string {
		return this._prefix + (++this._lastId);
	}
}

这段代码实现了一个简单的ID生成器类,具有以下特点:

  • 类名为**IdGenerator,通过export**关键字导出,可以被其他模块引用。
  • 类有两个私有属性,分别为前缀字符串**_prefix和最后一个生成的ID数_lastId**。
  • 类有一个构造函数,接收一个前缀字符串参数**prefix,并将其赋值给私有属性_prefix,同时将最后一个生成的ID数_lastId**初始化为0。
  • 类有一个公共方法**nextId()**,用于生成下一个ID,其实现是将最后一个生成的ID数加1,然后将前缀字符串与该数字拼接成一个新的字符串并返回。

可以通过以下方式在其他模块中使用该类:

import { IdGenerator } from './IdGenerator';

const generator = new IdGenerator('id-');
const id1 = generator.nextId(); // 'id-1'
const id2 = generator.nextId(); // 'id-2'
const id3 = generator.nextId(); // 'id-3'

实际上,VSCode实现的这个id生成器就是一个简单的自增id,用在 css 的选择器上十分合适。

自增id的起源

自增ID起源于计算机科学中的关系型数据库领域。在关系型数据库中,每个记录(也称为行)都有一个唯一的标识符,用于标识该记录。这个标识符通常称为主键,可以用来引用和连接表中不同记录之间的关系。

在早期的关系型数据库中,主键通常是手动分配的,例如通过使用数字或字符串作为主键。但这种方式存在一些问题,例如当记录数量增加时,主键的分配和管理变得更加复杂。为了解决这个问题,关系型数据库引入了自增ID的概念。

自增ID是一种自动分配主键的方式,它通过自动递增整数来分配主键。当新的记录被添加到数据库中时,自增ID会自动分配一个唯一的整数值作为主键。这种方式不仅简化了主键的分配和管理,而且还提高了数据库的性能,因为整数比字符串更容易处理和比较。

自增ID的概念最早出现在1960年代早期的关系型数据库中,例如 IBMSystem ROracleBerkeley DB。自此之后,自增ID已经成为了现代关系型数据库的标准特性之一,被广泛应用于各种数据库系统中。

uuid与自增id

VSCode中同样实现了 uuid 的模块,它们都可以用来作为id的唯一标识符,自增id相对来说的好处如下:

  1. 索引效率高:自增ID是单调递增的,每次插入新记录时都会自动递增,因此可以更快地创建索引和查询数据。而UUID则是随机生成的,不具有递增性,索引效率相对较低。
  2. 存储空间小:自增ID通常只需要一个整数类型来表示,因此存储空间相对较小。而UUID需要一个128位的字符串来表示,存储空间相对较大。
  3. 更直观:自增ID的值可以很直观地体现出记录的创建顺序和时间顺序,更容易理解和使用。而UUID则是随机生成的,没有任何顺序性,不太直观。
  4. 更容易管理:自增ID可以更方便地进行主键管理和维护。例如,可以更容易地导入/导出数据,或者在数据表之间建立引用关系。

在VSCode中,更多的是用 idGenerator 来生成HTML的类名、属性名、id,这样可以避免 uuid 冗长的字符串,且看上去也非常的直观。

小结

本文分析了VSCode中的idGenerator工具函数,这是一个简单的自增ID生成器,用于创建HTML类名、属性名、ID等。代码实现了一个名为“IdGenerator”的类,具有几个独特的特点。该类名为“IdGenerator”,由VSCode导出并可被其他模块引用。它有两个私有属性——前缀字符串和上一个生成的ID号码,两者都在类的构造函数中初始化。公共方法“nextId()”通过将1添加到上一个生成的ID来生成下一个ID,将前缀字符串与新数字连接起来并返回结果。

自增ID是将主键自动分配给关系数据库记录的一种方法。它们使用唯一的整数值,每次将新记录添加到数据库时,该值会自动增加。这种方法简化了主键的分配和管理,并提高了数据库的性能。

自增ID具有更高的索引效率、更小的存储空间要求、更直观和更易于管理。而UUID是随机生成的,没有任何顺序,并需要更多的存储空间。