Хочешь уверенно проходить IT-интервью?

Мы понимаем, как сложно подготовиться: стресс, алгоритмы, вопросы, от которых голова идёт кругом. Но с AI тренажёром всё гораздо проще.
💡 Почему Т1 тренажёр — это мастхэв?
- Получишь настоящую обратную связь: где затык, что подтянуть и как стать лучше
- Научишься не только решать задачи, но и объяснять своё решение так, чтобы интервьюер сказал: "Вау!".
- Освоишь все этапы собеседования, от вопросов по алгоритмам до диалога о твоих целях.
Зачем листать миллион туториалов? Просто зайди в Т1 тренажёр, потренируйся и уверенно удиви интервьюеров. Мы не обещаем лёгкой прогулки, но обещаем, что будешь готов!
Реклама. ООО «Смарт Гико», ИНН 7743264341. Erid 2VtzqwP8vqy
Перевод публикуется с сокращениями, автор оригинальной статьи Charuka Herath.
Среди альтернатив занял место NanoID – один из ведущих конкурентов, которые заменят UUID. Чтобы лучше понимать сферу его применения, в этой статье мы поговорим об особенностях NanoID, его преимуществах и ограничениях.
NanoID и его использование
Когда дело доходит до создания UUID или NanoID в JavaScript, становится ясно, что тут все просто – у них есть NPM-пакеты, которые помогут вам. Все, что нужно сделать – установить библиотеку NanoID NPM с помощью команды npmi nanoid и использовать ее в своем проекте.
import { nanoid } from 'nanoid';
model.id = nanoid();
На приведенном ниже графике показано сравнение мы видим тенденцию к росту NanoID по сравнению с неизменным прогрессом UUID.

Надеемся, что эти цифры убедили вас попробовать NanoID.
1. Размер NanoID составляет всего 108 байт
В отличие от UUID, NanoID в 4,5 раза меньше по размеру и не имеет никаких зависимостей. Кроме того, ограничение по «весу» было использовано для уменьшения размера еще на 35%. Это напрямую влияет на размер данных. Например, использующий NanoID объект мал и компактен для передачи и хранения данных. По мере роста приложения эти цифры становятся заметными.
2. Более безопасный
В большинстве генераторов случайных чисел используют небезопасную Math.random(). Однако NanoID использует crypto module и Web Crypto API, которые являются более безопасными. Кроме того, NanoID использует свой собственный алгоритм, называемый uniform algorithm, при реализации генератора идентификаторов вместо использования random % alphabet.
3. Быстрый и компактный
NanoID на 60% быстрее UUID. Вместо 36 символов в алфавите UUID, NanoID имеет только 21 символ.
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-
А еще NanoID поддерживает 14 различных языков программирования, а именно:
C#, C++, Clojure and ClojureScript, Crystal, Dart & Flutter, Deno, Go, Elixir, Haskell, Janet, Java, Nim, Perl, PHP, Python with dictionaries, Ruby , Rust, Swift.
4. Совместимость
NanoID умеет работать с PouchDB, CouchDB WebWorkers, Rollup и библиотеками, вроде React и React-Native. Вы можете получить уникальный идентификатор в терминале с помощью npx nanoid, но для этого вам придется соблюсти необходимое условие – установка NodeJS.

Кроме того, в наборе инструментов Redux можно найти NanoID и использовать его следующим образом:
import { nanoid } from ‘@reduxjs/toolkit’
console.log(nanoid()) //‘dgPXxUz_6fWIQBD8XmiSy’
5. Пользовательские алфавиты
Еще одной существующей особенностью NanoID является то, что он позволяет разработчикам применять пользовательский алфавит. Вы можете изменить литералы или размер идентификатора, как показано ниже:
import { customAlphabet } from 'nanoid';
const nanoid = customAlphabet('ABCDEF1234567890', 12);
model.id = nanoid();
В приведенном выше примере определяется пользовательский алфавит ABCDEF1234567890 с размером идентификатора 12.
6. Отсутствие сторонних зависимостей
Поскольку на NanoID не влияют какие-либо сторонние зависимости, со временем он будет становиться более стабильным и управляемым. Это полезно для оптимизации размера пакета в долгосрочной перспективе и делает его менее подверженным связанным с зависимостями проблемам.
Ограничения и направленность на будущее
По мнению многих экспертов по StackOverflow, использование NanoID не имеет существенных недостатков или ограничений.
Когда вы используете NanoID в качестве первичного ключа таблицы, могут возникнуть проблемы, если вы будете использовать тот же столбец, что и кластеризованный индекса. Это происходит из-за того, что NanoID не являются последовательными.
В будущем…
NanoID постепенно становится самым популярным генератором уникальных идентификаторов для JavaScript, и большинство разработчиков выбирают его вместо UUID.

Приведенные выше тесты показывают производительность NanoID по сравнению с другими генераторами идентификаторов.
Учитывая опыт применения, можно смело использовать NanoID вместо UUID для любых будущих проектов, благодаря его небольшому размеру, удобству URL, безопасности и скорости.
Дополнительные материалы:
Попробуйте NanoID в следующем проекте и поделитесь своими мыслями с другими в комментариях – нам очень интересно. Спасибо за чтение!