⌘K
Примеры
Подборка пошаговых руководств, примеров, видео и инструкций, которые познакомят вас со средой выполнения Deno и покажут, как использовать её с вашими любимыми инструментами.
Не нашли то, что искали? Запросить новое руководство
Рекомендуем
HTTP-сервер: Привет, мирЗапустите веб-сервер с помощью Deno.serve всего в несколько строк. Написание тестовИспользуйте встроенный запускатель тестов — зависимости не нужны. Создание приложения Next.jsЗапустите полнофункциональный фреймворк React в Deno. Подключение к базам данныхPostgres, MySQL, MongoDB, SQLite и другие. Развертывание с помощью Deno DeployРазверните приложение на периферии сети за считаные минуты. Встроенная поддержка TypeScriptЗапускайте TypeScript напрямую, без настройки.
Фильтр по типу:
Всего: 328 материаловОсновы
- Встроенная поддержка TypeScriptDeno изначально понимает код TypeScript, и для этого не нужно настраивать компилятор.
- Проверка глубокой эквивалентности двух значенийДва объекта с одинаковым содержимым не равны при сравнении оператором ===, который сравнивает ссылки.
- Исполняемые скриптыРуководство по созданию исполняемых скриптов с помощью Deno.
- Создание документации с помощью deno docУзнайте, как создавать профессиональную документацию для проектов Deno с помощью встроенной команды deno doc.
- Привет, мирЕдинственная строка в этой программе выводит в консоль «Hello, World!».
- Импорт и экспорт функцийДля создания компонуемых программ необходимо иметь возможность импортировать и экспортировать функции из других модулей.
- Инициализация проектаРуководство по созданию и организации новых проектов Deno.
- Запуск скриптаРуководство по созданию и запуску простых скриптов с помощью Deno.
- Предоставление доступа к локальному серверу через туннельМгновенно предоставьте доступ по общедоступному URL с помощью параметра --tunnel
- Простой API-серверСоздайте простой API для сокращения ссылок с помощью Deno KV и стандартных веб-примитивов, а затем разверните его в Deno Deploy.
- Простой файловый серверРуководство по созданию файлового сервера с помощью Deno.
- Ожидание и задержка выполненияСкриптам часто приходится ждать: между повторами попыток, во время опроса или для регулирования частоты запросов.
- await на верхнем уровнеПример использования await на верхнем уровне по умолчанию в Deno.
- Переход с CommonJS на ESMПошаговое руководство по переносу проектов Node.js с модулей CommonJS на ESM.
Модули и управление пакетами
- Добавление и удаление зависимостейУправляйте зависимостями проекта с помощью deno add и deno remove: пакеты npm и JSR, фиксация версий, зависимости для разработки и псевдонимы пакетов в карте импортов.
- Настройка монорепозитория с рабочими пространствамиНастройте рабочее пространство Deno с несколькими пакетами: имена участников и экспорты, шаблоны glob, параметры только для корневого пакета, общие импорты и централизованные версии зависимостей с помощью каталогов.
- Импорт модулей из npmИспользуйте JavaScript-модули из npm в программах Deno, указывая в импортах спецификатор "npm:".
- Фиксация зависимостей с помощью deno.lockИспользуйте deno.lock для воспроизводимой установки: какие сведения записывает lock-файл, как проверять его изменения, замороженные lock-файлы для CI с флагом --frozen и командой deno ci, а также пересоздание или перемещение lock-файла.
- Метаданные модуляРуководство по работе с метаданными модулей в Deno.
- Переназначение путей импортаИспользуйте поле imports в deno.json как карту импортов: псевдонимы путей, например @/ для src/, короткие имена локальных модулей и переопределения для транзитивных импортов.
- Запуск Deno в GitHub ActionsНастройте рабочий процесс GitHub Actions для проекта Deno: установите Deno с помощью setup-deno, кэшируйте зависимости, запускайте fmt, lint и test, выполняйте установку с замороженным lock-файлом и тестируйте проект в разных версиях Deno.
- Запуск скриптов жизненного цикла npmРазрешите выполнение postinstall и других скриптов жизненного цикла npm в Deno с помощью deno approve-scripts и сохраните разрешения в поле allowScripts файла deno.json.
- Использование Deno в существующем проекте Node.jsЗапускайте существующий проект Node.js с помощью Deno без переписывания: устанавливайте зависимости из package.json, запускайте npm-скрипты с помощью deno task, используйте встроенные модули node: и постепенно переходите на встроенные инструменты Deno.
- Использование локальных и неопубликованных пакетовРаботайте с кодом, которого нет в реестре: подключайте локальную копию пакета с помощью поля links, импортируйте напрямую по HTTPS-URL, включая приватные репозитории GitHub, и узнавайте, какие спецификаторы Deno не поддерживает.
- Использование встроенных модулей Node.jsDeno изначально поддерживает большинство встроенных модулей Node.js — их можно подключать в коде, указывая в импортах спецификаторы "node:".
- Использование приватных реестров npmНастройте Deno для установки пакетов npm из приватных реестров: реестры и токены аутентификации с областями действия в .npmrc, переопределение NPM_CONFIG_REGISTRY, DENO_AUTH_TOKENS и примеры настройки Azure Artifacts и JFrog Artifactory.
Сеть
- Аутентификация с Auth.jsAuth.js — самая широко используемая библиотека аутентификации для JavaScript.
- Создание чата с помощью WebSocketsРуководство по созданию чата с обменом сообщениями в реальном времени с использованием WebSockets в Deno.
- Обмен данными по QUICQUIC — транспортный протокол, лежащий в основе HTTP/3.
- Соединение двух узлов с помощью WebTransportWebTransport — это API веб-платформы для низколатентного мультиплексированного обмена данными по HTTP/3.
- Создание и проверка JWTВ этом примере показано, как создать и проверить JSON Web Token (JWT) с помощью библиотеки `jose` в Deno.
- Загрузка файла с отображением прогрессаПотоковая запись загружаемого файла прямо на диск позволяет сохранять постоянный объём используемой памяти независимо от размера файла.
- Аутентификация по электронной почте и паролю с Better AuthBetter Auth — независимая от фреймворков библиотека аутентификации, ориентированная на TypeScript.
- Запросы через Unix-сокетЛокальные службы, например демон Docker, предоставляют доступ к HTTP через доменный сокет Unix, а не через порт TCP.
- Маршрутизация на основе файловРуководство по реализации маршрутизации на основе файлов в Deno.
- Поиск свободного портаТестовые серверы и вспомогательные процессы не должны конфликтовать из-за жёстко заданных портов.
- Создание RSS-лентыRSS-лента — это небольшой XML-документ, который позволяет читателям подписываться на обновления сайта.
- Создание sitemap.xml и robots.txtПоисковые системы находят страницы с помощью карты сайта, а правила сканирования считывают из robots.txt.
- HTTP-сервер HonoПример HTTP-сервера, использующего фреймворк Hono.
- HTTP-запросыВ этом примере показано, как отправить HTTP-запрос серверу.
- HTTP-сервер: базовая аутентификацияПри базовой аутентификации имя пользователя и пароль отправляются в кодировке Base64 в заголовке авторизации.
- HTTP-сервер: заголовки кэшированияЗаголовки кэширования позволяют клиентам не загружать повторно уже имеющиеся у них данные.
- HTTP-сервер: файлы cookieФайлы cookie передают состояние между запросами с помощью заголовков cookie и set-cookie.
- HTTP-сервер: CORSБраузеры блокируют междоменные запросы, если сервер не разрешает их с помощью заголовков CORS.
- HTTP-сервер: CRUD с SQLite3Пример HTTP-сервера с маршрутами CRUD на основе middleware-фреймворка oak и базы данных SQLite3.
- HTTP-сервер: корректное завершение работыПринудительное завершение работы сервера во время обработки запроса приводит к разрыву соединений и потере данных.
- HTTP-сервер: проверки работоспособностиКонечные точки проверки работоспособности помогают балансировщикам нагрузки и оркестраторам принимать решения о дальнейшей работе процесса.
- HTTP-сервер: привет, мирПример HTTP-сервера, который отправляет сообщение «Привет, мир».
- HTTP-сервер: горячая перезагрузкаПерезапускать сервер вручную после каждого изменения быстро надоедает.
- HTTP-сервер: потоки Node.jsКод, перенесённый из Node.js, часто использует потоки Node.js: файловые потоки, курсоры баз данных, генераторы архивов.
- HTTP-сервер: разбиение результатов на страницыAPI, возвращающим списки, нужна пагинация, чтобы каждый ответ оставался небольшим.
- HTTP-сервер: ограничение частоты запросовОграничитель частоты запросов защищает сервер от клиентов, отправляющих слишком много запросов.
- HTTP-сервер: тайм-ауты запросовОбработчик, зависящий от медленного внешнего сервиса, может бесконечно удерживать соединение открытым.
- HTTP-сервер: маршрутизацияПример HTTP-сервера, который обрабатывает запросы и отправляет разные ответы в зависимости от URL запроса.
- HTTP-сервер: масштабирование на несколько ядер CPUОдин процесс обрабатывает запросы на одном ядре.
- HTTP-сервер: события, отправляемые серверомСобытия, отправляемые сервером, передают обновления от сервера браузеру через один долгоживущий HTTP-ответ; API EventSource обеспечивает автоматическое переподключение.
- HTTP-сервер: раздача файловПример HTTP-сервера, который раздаёт файлы.
- HTTP-сервер: сеансыСеанс позволяет пользователю оставаться в системе между запросами.
- HTTP-сервер: потоковая передачаПример HTTP-сервера, который передаёт ответ клиенту в потоковом режиме.
- HTTP-сервер: TLSDeno.serve работает по HTTPS, если ему передать сертификат и закрытый ключ.
- HTTP-сервер: проверка подписей вебхуковОтправители вебхуков подписывают каждую доставку, чтобы получатели могли убедиться, что данные отправлены именно ими и не были изменены при передаче.
- HTTP-сервер: WebSocketПример HTTP-сервера, обрабатывающего запросы WebSocket.
- Исходящие подключения WebSocketОткрыть WebSocket-соединение для двустороннего обмена данными с Deno в реальном времени очень просто.
- Передача потоковВ Deno реализованы соответствующие веб-стандартам потоки, которые дают множество преимуществ.
- Защита маршрутов с помощью JWT в HonoРаспространённый способ аутентификации — выдавать JSON Web Token при входе и требовать его для доступа к защищённым маршрутам.
- Проксирование HTTP-запросовОбратный прокси-сервер принимает запросы и пересылает их другому серверу.
- Направление fetch через HTTP-проксиПо умолчанию Deno учитывает переменные окружения HTTP_PROXY, HTTPS_PROXY и NO_PROXY как при загрузке модулей, так и при вызове fetch — без изменений кода.
- Выполнение DNS-запросовВ некоторых случаях полезно выполнять DNS-запросы.
- Вход через GitHub (OAuth)Поток авторизации OAuth с кодом позволяет пользователям входить с помощью существующей учётной записи.
- TCP-клиент: PingПример подключения к TCP-серверу на localhost и отправки ему сообщения «ping».
- TCP-сервер эхоЭхо-сервер — это простое сетевое приложение, которое ожидает входящие подключения и запросы, а затем отправляет клиентам обратно полученные данные.
- TCP-слушатель: PingПример TCP-слушателя на localhost: он записывает полученное сообщение и закрывает соединение при подключении.
- TCP/TLS-клиент: PingПример подключения к TCP-серверу на localhost с использованием TLS и отправки ему сообщения «ping».
- TCP/TLS-слушатель: PingПример TCP-слушателя на localhost с использованием TLS: он записывает полученное сообщение и закрывает соединение при подключении.
- Двусторонняя потоковая передача с WebSocketStreamWebSocketStream — основанная на промисах альтернатива событийного API WebSocket.
- UDP-клиент: PingПример отправки сообщения «ping» UDP-серверу на localhost.
- UDP-слушатель: PingПример UDP-слушателя на localhost: он записывает полученное сообщение и закрывает соединение при подключении.
- Обновление TCP-соединения до TLS (STARTTLS)Некоторые протоколы начинают работу в открытом виде и согласовывают шифрование уже во время соединения, вместо того чтобы сразу подключаться через TLS.
- WebSocket-сервер: широковещательная рассылка сообщенийЧатам, интерактивным панелям и многопользовательским играм нужно одно и то же: доставлять сообщение от одного клиента всем остальным.
- WebSocket-сервер: состояние для каждого сокетаБольшинству WebSocket-серверов нужно знать, кому принадлежит каждый сокет: имя пользователя, комната, сеанс.
Файловая система
- Проверка существования каталогаПеред созданием каталога полезно сначала убедиться, что такой каталог ещё не существует.
- Проверка существования файлаПеред созданием файла полезно сначала убедиться, что такой файл ещё не существует.
- Преобразование URL файлов в пути и обратноВ Deno модули идентифицируются по URL, а API файловой системы используют пути.
- Копирование файлаДля копирования файла в Deno достаточно одного вызова.
- Создание и распаковка tar-архивовВ tar-архив можно объединить множество файлов и каталогов в один файл, обычно сжимая его с помощью gzip и получая знакомый формат .tar.gz.
- Создание жёстких ссылокЖёсткая ссылка — это второе имя того же файла.
- Создание и удаление каталоговСоздание и удаление каталогов — распространённая задача.
- Создание и разрешение символических ссылокСоздание и разрешение символических ссылок — распространённая задача.
- Удаление файловУдаление файлов и каталогов — распространённая задача.
- События файловой системыРуководство по отслеживанию изменений файловой системы с помощью Deno.
- Поиск файлов по шаблонам globШаблоны glob описывают наборы путей к файлам в одной компактной строке: * соответствует внутри сегмента пути, а ** — в разных каталогах.
- Определение MIME-типа файлаДля передачи файла по HTTP требуется заголовок типа содержимого.
- Блокировка файлов для разных процессовЕсли два процесса одновременно записывают данные в один файл, результат будет беспорядочным.
- Перемещение и переименование файловПример перемещения и переименования файлов и каталогов в Deno.
- Операции с путямиМногим приложениям требуется так или иначе работать с путями к файлам.
- Чтение и изменение метаданных файловУ каждого файла есть метаданные помимо его содержимого: размер, временные метки, тип и разрешения.
- Чтение файловМногим приложениям требуется читать файлы с диска.
- Потоковые операции с файламиИногда требуется более детально управлять операциями с файлами.
- Временные файлы и каталогиВременные файлы и каталоги используются для хранения данных, которые не должны сохраняться постоянно.
- Усечение файлаУсечение задаёт файлу точную длину, не перезаписывая его содержимое.
- Команда Unix catВ Unix команда `cat` — это утилита, которая читает файлы и выводит их в стандартный поток вывода.
- Обход каталоговПри решении таких задач, как маршрутизация по файловой системе, полезно уметь обходить каталог и посещать файлы.
- Отслеживание файловой системыПри создании фреймворков или инструментов командной строки часто необходимо отслеживать изменения файловой системы.
- Пошаговая запись в файлЗаписать файл целиком за один раз удобно, пока объём данных невелик или данные не поступают частями, как при загрузке или записи в журнал.
- Запись файловМногим приложениям требуется записывать файлы на диск.
Система
- Вызов функций C с помощью FFIForeign Function Interface позволяет Deno напрямую вызывать функции из нативных динамических библиотек без связующего кода и этапа сборки.
- Сбор вывода подпроцессовМы нечасто пишем программы в изоляции.
- Обмен данными с дочерним процессом через IPCКаналы передают байты, но для взаимодействия с рабочим процессом удобнее использовать структурированные сообщения.
- Создание подпроцессаРуководство по работе с подпроцессами в Deno.
- Определение TTY и получение размера терминалаПрограмма может проверить, взаимодействует ли она с настоящим терминалом или с каналом.
- Переменные средыПеременные среды можно использовать для настройки поведения программы или передачи данных между программами.
- Поиск исполняемого файла в PATHПеред запуском такой программы, как git или ffmpeg, полезно узнать, установлена ли она и где находится.
- Получение сведений об операционной системеСкриптам часто нужно знать, в какой системе они выполняются, например, чтобы выбрать двоичный файл для конкретной платформы или включить сведения о хосте в журналы.
- Обработка сигналов ОСРуководство по обработке сигналов операционной системы в Deno.
- Список сетевых интерфейсовDeno.networkInterfaces перечисляет все сетевые адреса компьютера.
- Прослушивание сигналов ОСПрослушивать сигналы ОС можно с помощью функции `Deno.addSignalListener`.
- Передача данных в подпроцесс через каналМногие инструменты командной строки считывают входные данные из stdin.
- Сведения о процессеПример получения идентификатора текущего процесса и идентификатора родительского процесса.
- Чтение из stdinИнструменты командной строки, работающие в конвейерах, считывают входные данные из stdin.
- Построчное чтение ввода с помощью node:readlineМодуль node:readline считывает поток построчно независимо от того, на какие части разбиты байты; он также обеспечивает работу интерактивных запросов во многих программах Node.js.
- Чтение системных метрикВ этом примере показано, как использовать встроенные методы Deno для чтения системных метрик, таких как сведения о памяти, средняя загрузка и использование памяти.
- Запуск подпроцесса с пользовательскими env и cwdПодпроцесс обычно наследует переменные среды и рабочий каталог родительского процесса.
- Установка и чтение кодов завершения процессаКод завершения сообщает оболочке об успехе или ошибке программы: ноль означает успех, любое другое значение — ошибку.
- Настройка часового поясаDate, Intl и Temporal форматируют время в часовом поясе процесса, который по умолчанию соответствует настройке операционной системы.
- Подпроцессы: запускВ более сложных случаях нам нужен не просто вывод какой-либо команды.
- Использование EventEmitter из node:eventsEventEmitter — классический строительный блок Node.js для объектов, генерирующих именованные события; многие пакеты npm предоставляют такие объекты.
- Использование worker_threads в DenoDeno поддерживает модуль node:worker_threads для переноса задач из основного потока.
- Запись в stdoutconsole.log подходит для отладки, но инструментам командной строки часто нужен точный контроль над стандартным выводом: без принудительного перевода строки, с необработанными байтами или передачей всего потока по каналу.
Стандартные веб-API
- Улучшенная отладка с помощью API consoleПодробное руководство по расширенной отладке в консоли Deno.
- Создание и отправка форм с помощью FormDataFormData собирает пары ключ-значение, включая файлы, а fetch умеет отправлять их в виде multipart-запроса.
- Кэширование HTTP-ответов с помощью Web Cache APIВ Deno реализован Web Cache API из сервис-воркеров.
- Отмена асинхронной работы с помощью AbortControllerAbortController создаёт AbortSignal, который может отменять запросы fetch, удалять обработчики событий и останавливать любой код, проверяющий сигнал.
- Обмен данными между воркерами с помощью BroadcastChannelBroadcastChannel — это именованная шина.
- Создание и отправка пользовательских событийEventTarget — это система событий, лежащая в основе DOM; её можно использовать как базовый класс для собственных типов.
- Глубокое клонирование объектов с помощью structuredClonestructuredClone создаёт глубокую копию значения, поэтому изменения в копии никогда не затрагивают оригинал.
- Распределение задач между воркерами пулаОдин веб-воркер переносит ресурсоёмкие вычисления из основного потока, а пул воркеров задействует все ядра процессора.
- Экранирование HTML-строкиПодстановка пользовательского ввода в HTML без экранирования открывает путь для межсайтового скриптинга.
- Извлечение ссылок и метаданных из HTMLПарсеры, проверка ссылок и карточки предварительного просмотра начинаются одинаково: загрузите страницу и извлеките данные из её HTML.
- Загрузка и потоковая передача данныхРуководство по работе с сетевыми запросами в Deno.
- Форматирование дат для любой локалиIntl.DateTimeFormat преобразует объект Date в текст с учётом любой локали и часового пояса.
- Форматирование чисел и валютIntl.NumberFormat форматирует числа с учётом любой локали и стиля.
- Форматирование относительного времениIntl.RelativeTimeFormat создаёт фразы вроде «3 дня назад» или «через 2 месяца» для любой локали.
- Цветное логированиеБольшинство современных терминалов умеют отображать журналы программ в цвете и с оформлением текста.
- Обработка и разбор URLURL — стандартный веб-интерфейс для разбора и обработки URL.
- Сопоставление URL с помощью URLPatternURLPattern сопоставляет URL с шаблонами маршрутов и извлекает динамические части.
- Измерение производительности с помощью меток и измеренийAPI производительности измеряет прошедшее время с точностью до миллисекунды.
- Разбор и форматирование датПовседневная работа с датами включает разбор значения, форматирование для пользователей и выполнение арифметических операций.
- Образование форм множественного числа и форматирование списковСамодельное образование множественного числа, например добавление s, перестаёт работать, как только вы выходите за пределы английского языка.
- Запуск вычислительного шейдера с помощью WebGPUWebGPU предоставляет JavaScript прямой доступ к GPU и, в отличие от WebGL, не ограничивается графикой: вычислительные шейдеры выполняют произвольные параллельные вычисления.
- Установка тайм-аута для fetchУ fetch нет параметра тайм-аута, но он принимает AbortSignal, а AbortSignal.timeout создаёт сигнал, который срабатывает по истечении заданного количества миллисекунд.
- Установка тайм-аутов и интерваловТаймеры используются для планирования выполнения функций в будущем.
- Разбиение текста на слова, предложения и графемыРазбиение текста с помощью split или slice по знакам препинания, эмодзи и языкам, в которых не используются пробелы, работает некорректно.
- API TemporalПример использования API Temporal для работы с датами, временем и временными метками.
- Преобразование данных с помощью TransformStreamTransformStream находится в середине конвейера потоков и преобразует фрагменты данных по мере их прохождения.
- WebAssemblyWebAssembly — это бинарный формат для описания данных и инструкций программы.
- Веб-воркерыВоркеры — единственный способ выполнять JavaScript вне основного потока.
Стандартная библиотека
- Добавление тайм-аута к любому промисуУ промиса нет встроенного ограничения по времени, поэтому зависший запрос может навсегда остановить программу.
- Преобразование регистра строкиДля идентификаторов, имён файлов, CSS-классов и столбцов баз данных используются разные соглашения о регистре.
- Ограничение частоты вызова функцииФункция с ограничением частоты вызова ждёт, пока вызовы прекратятся, и только после этого выполняется.
- Экранирование текста для регулярных выраженийСоздавать RegExp из пользовательского ввода опасно: такие символы, как скобки и точки, имеют в шаблонах особое значение.
- Экспоненциальная задержкаЭкспоненциальная задержка — это метод, используемый в компьютерных системах для повторных попыток и предотвращения чрезмерной нагрузки на сервисы.
- Удобное для восприятия форматирование байтов и длительностиНеобработанные числа, например 1536 байт или 97000 миллисекунд, трудно воспринимать в журналах и пользовательских интерфейсах.
- Генерация случайных чисел с заданным начальным значениемMath.random не позволяет задать начальное значение, поэтому его нельзя использовать в тестах и симуляциях, которым нужны воспроизводимые случайные числа.
- Мемоизация ресурсоёмкой функцииМемоизация кэширует результат вызова функции, поэтому повторные вызовы с теми же аргументами выполняются мгновенно.
- Разбор и сравнение версий semverСтроки версий нельзя сравнивать как обычный текст: при алфавитной сортировке «1.10.0» оказывается перед «1.2.0».
- Выполнение асинхронных задач с ограничением параллелизмаОдновременная отправка сотен запросов может перегрузить сервер или привести к превышению ограничений частоты запросов.
- Структурированное журналированиеПакет @std/log направляет записи журнала обработчикам с настраиваемыми уровнями важности.
- Обработка пользовательских данных с помощью Deno CollectionsПример использования библиотеки Deno @std/collections для обработки пользовательских данных.
Кодирование
- Сжатие и распаковка данныхСжатие данных перед их хранением или отправкой экономит место и пропускную способность.
- Сжатие данных с помощью node:zlibМодуль node:zlib встроен в Deno и предлагает больше кодеков и параметров, чем стандартные потоки веб-платформы, включая brotli и синхронные вспомогательные функции для однократного сжатия.
- Преобразование BlobОбъекты Blob встречаются при работе с файлами или данными multipart-форм, поскольку загруженный файл File тоже является Blob.
- Преобразование Buffer (node:buffer)API Node.js и многие пакеты npm создают объекты Buffer.
- Преобразование Node.js ReadableAPI Node.js и пакеты npm часто возвращают Node.js Readable вместо веб-потока ReadableStream.
- Преобразование ReadableStreamСетевые ответы, файловые дескрипторы и вывод подпроцессов предоставляют ReadableStream.
- Преобразование строки в байты и обратноДля хеширования, записи файлов и сетевых протоколов нужны байты, а не строки.
- Преобразование Uint8ArrayUint8Array — основной бинарный тип в Deno: при чтении файлов, получении сетевых данных и вычислении хешей он используется для создания или обработки данных.
- Преобразование ArrayBufferArrayBuffer — это блок необработанной памяти без собственного интерфейса чтения или записи.
- Кодирование и декодирование CBORCBOR — двоичный формат сериализации, стандартизированный в RFC 8949.
- Кодирование и декодирование MessagePackMessagePack — двоичный формат сериализации с той же моделью данных, что и у JSON.
- Извлечение front matter из MarkdownFront matter — это блок метаданных в начале файла Markdown, ограниченный строками --- и обычно записанный в YAML.
- Шестнадцатеричное кодирование и base64Бинарные данные часто нужно передавать в текстовом виде — в URL, JSON или HTTP-заголовках.
- Импорт байтовБинарные файлы можно импортировать в файлы JS и TS с помощью ключевого слова `import`.
- Импорт JSONФайлы JSON можно импортировать в файлы JS и TS с помощью ключевого слова `import`.
- Импорт текстаТекстовые файлы можно импортировать в файлы JS и TS с помощью ключевого слова `import`.
- Работа с массивами байтовПри работе с данными низкого уровня мы часто используем массивы байтов в виде Uint8Array.
- Разбор и создание XMLПакет @libs/xml на JSR преобразует XML в обоих направлениях: из текста XML в обычные объекты JavaScript и обратно.
- Разбор больших CSV-файлов в виде потоковЧтение всего CSV-файла в память становится невозможным, когда его размер достигает гигабайтов.
- Разбор и сериализация CSVCSV — формат сериализации данных, разработанный для обеспечения переносимости в приложениях с табличными данными.
- Разбор и сериализация INIINI — текстовый формат конфигурации, основанный на парах ключ-значение, которые можно группировать по разделам.
- Разбор и сериализация JSONJSON — широко используемый формат обмена данными.
- Разбор и сериализация TOMLTOML — широко используемый язык конфигурации, разработанный так, чтобы быть функциональным и удобным для написания.
- Разбор и сериализация YAMLYAML — широко используемый язык сериализации данных, разработанный так, чтобы его было легко читать и записывать человеку.
- Разбор JSONCJSONC — это JSON с комментариями и завершающими запятыми, что делает его более удобным форматом для конфигурационных файлов, редактируемых людьми.
- Потоковая обработка данных JSON LinesJSON Lines, также называемый NDJSON, хранит одно значение JSON в каждой строке.
CLI
- Создание CLI с подкомандамиТакие инструменты, как git и сам deno, сначала принимают подкоманду, а затем флаги.
- Сборка кода с помощью Deno.bundleDeno.bundle компилирует граф модулей в один файл JavaScript, разрешая и встраивая все импорты, включая пакеты jsr: и npm:.
- Аргументы командной строкиАргументы командной строки часто используются для передачи программе параметров конфигурации.
- Компиляция скрипта в исполняемый файлПодкоманда deno compile объединяет скрипт и все его зависимости в один автономный бинарный файл.
- Управление терминалом с помощью escape-кодов ANSIТерминалы интерпретируют специальные последовательности байтов, называемые escape-кодами ANSI, как команды: изменить цвет текста, стереть строку, переместить или скрыть курсор.
- Отладка с помощью Chrome DevTools
- Поиск и обновление устаревших зависимостейЗависимости, зафиксированные несколько месяцев назад, незаметно устаревают.
- Как узнать версию DenoКак проверить используемую версию Deno.
- Запросы вводаЗапросы используются, чтобы попросить пользователя ввести данные или сообщить о действиях.
- Анализ памяти с помощью снимков кучиЕсли потребление памяти постоянно растёт, снимок кучи покажет, что её удерживает: полный дамп всех живых объектов, который можно исследовать в Chrome DevTools.
- Управление разрешениямиИногда в зависимости от разрешений, предоставленных процессу, нужно выполнять разные действия.
- Расширенный вывод в блокнотах JupyterDeno поставляется с ядром Jupyter, поэтому блокноты могут выполнять TypeScript с полным доступом к API Deno и веб-платформы.
- Отображение индикаторов выполнения и спиннеровИнструменты командной строки, которые долго выполняются и ничего не выводят, кажутся неисправными.
- Написание тестов производительности с помощью Deno.benchВ Deno встроен инструмент для запуска тестов производительности.
Криптография
- Шифрование и расшифрование AESВ этом примере показано шифрование и расшифрование AES с помощью встроенного API SubtleCrypto в Deno.
- Сравнение секретов за постоянное времяОбычное сравнение, например a === b, завершается сразу после обнаружения первого отличающегося байта, поэтому отклонение значения с правильным первым байтом занимает измеримо больше времени, чем с неправильным.
- Создание ключей шифрования на основе паролейПароль — это не ключ шифрования: он короткий, обладает низкой энтропией и имеет неподходящий размер для AES.
- Генерация криптографически стойких случайных значенийТокены сеансов, ссылки для сброса пароля и ключи API должны быть невозможны для угадывания.
- Генерация и проверка UUIDUUID (универсальный уникальный идентификатор) можно использовать для уникальной идентификации объектов или данных.
- Хеширование и подпись с помощью node:cryptoDeno поддерживает модуль node:crypto, поэтому зависящие от него пакеты npm работают сразу после установки.
- Хеширование больших файлов с помощью потоковФункция digest Web Crypto принимает один буфер, поэтому для хеширования файла его сначала нужно целиком загрузить в память.
- ХешированиеХеширование данных — распространённая операция, которую упрощает поддержка Deno для API Web Crypto.
- Хеширование и проверка паролейПароли нельзя хранить в открытом виде, а простой хеш, например SHA-256, вычисляется слишком быстро, чтобы противостоять перебору.
- Создание и проверка HMACВ этом примере показано создание и проверка HMAC (кода аутентификации сообщения на основе хеша) с помощью встроенного API SubtleCrypto в Deno и хеш-функции SHA-256.
- Подпись и проверка RSASSA-PKCS1-v1_5В этом примере показаны создание и проверка подписи RSA с помощью встроенного API SubtleCrypto в Deno.
- Разделение секрета ШамираВ этом примере показано разделение секрета Шамира: секрет разбивается на доли, и восстановить его можно, только объединив достаточное количество долей.
- Подпись и проверка данных с помощью ECDSAЦифровая подпись подтверждает, что сообщение создано владельцем закрытого ключа и не было изменено при передаче.
- ULIDРаспределённым системам часто требуются идентификаторы.
Тестирование
- Основы тестированияИзучите ключевые понятия: настройку и структуру тестов, проверки, асинхронное тестирование, имитации, тестовые фикстуры и покрытие кода
- BDD-тестированиеРеализация разработки через поведение с помощью модуля BDD из стандартной библиотеки Deno.
- Фильтрация и управление запусками тестовСредство запуска тестов предлагает параметры для повседневной работы: запуск теста по имени, остановка при первой ошибке, повторный запуск при сохранении и распределение файлов тестов по ядрам процессора.
- Имитации и тестовые двойники
- Пропуск и выборочное выполнение тестовИногда тест не следует запускать: он ещё не завершён, не работает на одной из платформ или вы хотите сосредоточиться на одном сбойном сценарии.
- Тестирование снимков
- Функции-шпионыШпион-функция позволяет проверить, что функция была вызвана с правильными аргументами и заданное число раз.
- Тестирование веб-приложенийПодробное руководство по тестированию веб-приложений с Deno
- Использование Testing Library с DenoПроверяйте поведение DOM с помощью @testing-library/dom и happy-dom в deno test: поиск по роли и тексту, имитация событий и необходимые разрешения.
- Написание тестовОдна из самых распространённых задач при разработке программного обеспечения — написание тестов для существующего кода.
Веб-фреймворки и библиотеки
- Принимайте платежи с помощью Stripe CheckoutStripe Checkout размещает страницу оплаты для вас.
- Создайте приложение на FreshПолное руководство по созданию полнофункциональных приложений с Fresh и Deno.
- Создайте приложение на Next.jsПошаговое руководство по созданию приложения Next.js с Deno.
- Создайте приложение Nuxt с DenoПошаговое руководство по созданию приложений Nuxt с Deno.
- Создайте приложение Qwik с DenoПошаговое руководство по созданию приложений Qwik с Deno.
- Создайте приложение ReactПолное руководство по созданию приложений React с Deno и Vite.
- Создайте приложение SolidJSСоздайте приложение SolidJS с Deno.
- Создайте приложение SvelteРуководство по созданию приложений SvelteKit с Deno.
- Создайте приложение TanstackПолное руководство по созданию приложений с Tanstack и Deno.
- Создайте типобезопасный API с tRPC и DenoРуководство по созданию типобезопасных API с tRPC и Deno.
- Создайте приложение VueРуководство по созданию приложений Vue.js с Deno.
- Создайте приложение для поиска словРуководство по созданию приложения для поиска слов с Deno.
- Создайте сайт Astro с DenoПошаговое руководство по созданию веб-приложений с Astro и Deno.
- Создание PDFПакет pdf-lib создает и редактирует документы PDF на чистом JavaScript, поэтому работает везде, где работает Deno, включая Deno Deploy.
- Создание QR-кодаQR-код содержит короткий текст, обычно URL-адрес, в виде изображения, которое можно отсканировать.
- Как использовать Apollo с DenoПошаговое руководство по интеграции Apollo GraphQL с Deno.
- Загрузка файлов на HTTP-серверПример HTTP-сервера, позволяющего отправлять и получать загруженные файлы.
- Рендеринг HTML-шаблонов с EtaКогда JSX избыточен, строковый шаблонизатор создает HTML из обычных шаблонов и данных.
- Преобразование Markdown в HTMLМодуль @deno/gfm преобразует GitHub Flavored Markdown в HTML с теми же таблицами, списками задач и подсветкой синтаксиса, что и на GitHub.
- Изменение размера и преобразование изображенийsharp — стандартная высокопроизводительная библиотека для обработки изображений; она работает в Deno через npm.
- Отправка электронной почты с ResendТранзакционные письма, например подтверждения регистрации и чеки, часто необходимы.
- Отправка электронной почты с SendGridSendGrid — широко используемый сервис транзакционной электронной почты.
- Загрузка файлов в хранилище, совместимое с S3AWS SDK работает с любым хранилищем, совместимым с S3, включая Amazon S3 и Cloudflare R2.
- Использование Express с DenoПошаговое руководство по использованию Express.js с Deno.
- Использование Vite с DenoПошаговое руководство по созданию фронтенд-приложения с Vite и Deno.
Базы данных
- DrizzleПошаговое руководство по созданию приложений для работы с базами данных с помощью Drizzle ORM и Deno.
- DuckDBС помощью Deno и DuckDB можно подключиться к базе данных в памяти или к постоянной базе данных, указав имя файла.
- Как использовать Redis с DenoПошаговое руководство по использованию Redis с Deno.
- MongoDBС помощью официального драйвера MongoDB можно подключиться к базе данных MongoDB, работающей где угодно.
- MongooseПошаговое руководство по использованию Mongoose с Deno.
- MySQLПошаговое руководство по использованию MySQL2 с Deno.
- ОбзорРуководство по подключению к базам данных в Deno.
- PlanetScaleПошаговое руководство по использованию PlanetScale с Deno.
- PostgresС помощью клиента Postgres для npm можно подключиться к базе данных Postgres, работающей где угодно.
- PrismaРуководство по созданию RESTful API с помощью Prisma и Oak в Deno.
- Быстрый старт с RedisС помощью модуля npm:redis (node-redis) можно подключиться к базе данных Redis, работающей где угодно.
- SQLiteС помощью модуля `node:sqlite` можно подключиться к локальной базе данных SQLite3 и выполнять основные операции с базой данных.
- SupabaseПодключение к базе данных Supabase с помощью библиотеки supabase-js.
Deno KV и планирование задач
- Атомарные транзакции в Deno KVТранзакции Deno KV объединяют операции чтения и записи: либо выполняются все, либо ни одна. При оптимистичном управлении параллелизмом транзакция фиксируется, только если прочитанные ею значения за это время не изменились.
- Deno CronDeno Cron — встроенный в среду выполнения Deno планировщик задач cron. В Deno Deploy он работает без дополнительной настройки.
- Отслеживание изменений Deno KVОтслеживание изменений Deno KV позволяет обнаруживать изменения в базе данных KV и упрощает создание приложений реального времени, новостных лент, чатов и других решений.
- Deno KV: база данных «ключ — значение»Deno KV — встроенная в среду выполнения Deno база данных «ключ — значение», которая работает в Deno Deploy без дополнительной настройки.
- Очереди DenoОчереди Deno, построенные на основе Deno KV, позволяют передавать выполнение отдельных частей приложения в фоновый режим или планировать асинхронный запуск задач на будущее.
ИИ
- Создание агента с вызовом функций OpenAIВызов функций позволяет модели вызывать определённые вами функции и действовать на основе полученных результатов.
- Создание агента с использованием инструментовИспользование инструментов позволяет Claude вызывать определённые вами функции и действовать на основе полученных результатов.
- Создание сервера MCPModel Context Protocol (MCP) — это стандартный способ предоставления инструментов и данных ИИ-ассистентам, таким как Claude.
- Подключение клиента к серверу MCPДругая сторона Model Context Protocol: клиент подключается к серверу, обнаруживает предоставляемые им инструменты и вызывает их.
- Подключение к Claude (API Anthropic)Официальный SDK Anthropic работает в Deno напрямую из npm.
- Подключение к OpenAI — генерация ответа в чатеВ этом примере показано, как взаимодействовать с API генерации ответов в чате OpenAI с помощью Deno: мы отправляем запрос пользователя и получаем ответ от модели GPT-4.
- Получение структурированного вывода JSON от ClaudeЕсли вам нужен машиночитаемый вывод, ограничьте ответ Claude схемой JSON с помощью output_config.format.
- Получение структурированного вывода JSON от OpenAIЕсли вам нужен машиночитаемый вывод, ограничьте ответ схемой JSON с помощью response_format.
- Чат-приложение с LLMУзнайте, как интегрировать большие языковые модели (LLM) с Deno для создания интерактивного чат-приложения для ролевых игр с ИИ-персонажами с помощью API OpenAI или Anthropic.
- RAG: обоснование ответа OpenAI вашими документамиГенерация с дополненной выборкой основывает ответ на ваших собственных данных.
- RAG: обоснование ответа Claude вашими документамиГенерация с дополненной выборкой основывает ответ на ваших собственных данных.
- Потоковая передача ответа чата от OpenAIОфициальный SDK OpenAI работает в Deno напрямую из npm.
- Потоковая передача ответа Claude в браузерВ интерфейсе чата токены должны появляться по мере их генерации моделью.
- Потоковая передача ответа OpenAI в браузерВ интерфейсе чата токены должны появляться по мере их генерации моделью.
Развёртывание проектов Deno
- AWS ECS FargateПошаговое руководство по развёртыванию приложения Deno в AWS ECS Fargate.
- AWS LambdaПошаговое руководство по развёртыванию приложений Deno в AWS Lambda.
- AWS LightsailПошаговое руководство по развёртыванию приложений Deno в AWS Lightsail.
- Workers CloudflareПошаговое руководство по развёртыванию функций Deno в Cloudflare Workers.
- Workers Cloudflare с WranglerУзнайте, как создавать и развёртывать приложение Deno в Cloudflare Workers с помощью Wrangler
- Подключение к базе данных локально и в Deno DeployПодключите базу данных Postgres к локальному серверу разработки с помощью Deno Deploy и функции туннелирования Deno
- Развёртывание с помощью Deno DeployПошаговое руководство по развёртыванию вашего первого приложения Deno в Deno Deploy.
- Развёртывание с помощью команды deployПошаговое руководство по использованию команды CLI deno deploy для создания и развёртывания вашего первого приложения в Deno Deploy.
- DigitalOceanПошаговое руководство по развёртыванию приложений Deno в DigitalOcean.
- Google Cloud RunПошаговое руководство по развёртыванию приложений Deno в Google Cloud Run.
- KinstaПошаговое руководство по развёртыванию приложений Deno в Kinsta.
- Перенос собственного домена в Deno DeployУзнайте, как перенести собственный домен с Deploy Classic в Deno Deploy
- Использование Deno в Docker
OpenTelemetry
- Базовая настройка OpenTelemetryНастройте базовую инструментацию OpenTelemetry в приложении Deno.
- Экспорт телеметрии в GrafanaПолное руководство по экспорту данных телеметрии с помощью OpenTelemetry и Grafana.
- Экспорт телеметрии в HoneycombПолное руководство по экспорту данных телеметрии с помощью OpenTelemetry и Honeycomb.io.
- Экспорт телеметрии в HyperdxПолное руководство по экспорту данных телеметрии с помощью OpenTelemetry и HyperDX.
- OpenTelemetry с Deno DeployПошаговое руководство по добавлению пользовательской инструментации OpenTelemetry в приложение Deno Deploy.
- Распространение спановРеализуйте сквозную распределённую трассировку с автоматической передачей контекста в приложениях Deno.
- Просмотр данных телеметрии локального приложенияОтправляйте телеметрию с локального сервера разработки с помощью функции туннелирования Deno
Deno Sandbox
- Добавление томов с правами на чтение и запись в SandboxДобавьте блочное хранилище с правами на чтение и запись в песочницу Deno.
- Запуск среды Python с помощью снимковСоздайте песочницу, предварительно загрузите Python и научные пакеты, сохраните снимок и запускайте песочницы без настройки, в которых работает исследователь множества Мандельброта.
- Мгновенный запуск с помощью снимковИспользуйте образы только для чтения, чтобы создавать изолированные и воспроизводимые среды.
- Отмена командыУзнайте, как отменять команды в песочнице.
- Настройка памяти песочницыУзнайте, как настроить объём памяти, выделяемой песочнице
- Управление временем ожидания песочницыУзнайте, как управлять временем работы песочницы с помощью параметра timeout.
- Обработка ошибокУзнайте, как обрабатывать ошибки в песочнице.
- Выполнение JavaScriptВыполнять код JavaScript в песочнице можно с помощью функции `eval`.
- Интерактивная REPL JavaScriptУзнайте, как предоставить интерактивную REPL Deno в песочнице.
- Предоставление экземпляра VSCode в песочницеУзнайте, как предоставить экземпляр VSCode в песочнице.
- Предоставление доступа к песочнице по SSHУзнайте, как предоставить доступ к песочнице по SSH.
- Запуск кода, сгенерированного ИИAPI Sandbox в Deno Deploy позволяет создавать защищённые микроВМ для безопасного запуска недоверенного кода.
- Запуск веб-фреймворкаСоздайте package.json, установите зависимости, запустите веб-фреймворк (Express) и предоставьте к нему публичный доступ из песочницы
- Установка и получение переменных средыУзнайте, как устанавливать и получать переменные среды в песочнице.
- Запуск дочернего процессаУзнайте, как запускать дочерний процесс и получать буферизованный вывод в песочнице.
- Передача вывода в локальный файл потокомУзнайте, как передавать вывод потоком в локальный файл в песочнице.
- Потоковый доступ к строковому и двоичному выводуУзнайте, как получать строковый и двоичный вывод команд в песочнице потоком.
- Загрузка файлов и каталогов в песочницуУзнайте, как загружать файлы и каталоги в песочницу.
- Использование шаблонных строк с интерполяцией переменныхУзнайте, как использовать команды с шаблонными строками и интерполяцией переменных в песочнице.
Ой! Вы отфильтровали всё
Попробуйте убрать фильтр, чтобы увидеть примеры.
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/tutorials