Как стать автором
Обновить
24.27

Node.JS *

Среда для запуска JavaScript-приложений

Сначала показывать
Порог рейтинга
Уровень сложности

Подготовка шаблона приложения на Typescript с Nest, Nuxt 3 и Docker

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 4.6K
Node.JS *API *DevOps *VueJS *TypeScript *
Туториал

Решил описать свой подход построения окружения на Typescript с Nest на бекенде, Nuxt (SPA) на фронтенде. Все заворачивается в один docker‑образ и запускается как standalone приложение c nginx, healthcheck»ами, тестами и ш…широкой сферой применения.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 2

Создание «Google Sheets» через Websockets на Node.js

Время на прочтение 10 мин
Количество просмотров 4K
Разработка веб-сайтов *JavaScript *Программирование *Node.JS *
Туториал

Введение

Всем привет! Меня зовут Герман Панов и в этой статье мы разработаем табличный редактор - аналог Google Sheets (в упрощенном виде), работающий на основе вебсокетов, чтобы познакомиться со способами применения этой технологии в браузерах.

Поскольку цель - ознакомление, код будет не очень «чистым», но для базового примера этого будет достаточно. В качестве серверной платформы будем использовать Node.js, также потребуется пакет ws, предоставляющий API для работы с вебсокетами на сервере.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 9

Стартуем микросервис на Node.js + fastify + Typescript + prisma + mongodb + grpc

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 6.8K
Node.JS *MongoDB *TypeScript *
Из песочницы

Зачастую возникает необходимость начать новый микросервис.

Вот и у меня совсем недавно возникла такая потребность. А ведь еще хочется и чего-то новенького попробовать.

Сперва был определен стек и хотя процесс для меня не новый, но я столкнулся с множеством подводных камней. В результате решил сделать этот туториал!

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 4

Пишем умный поиск по коду с Open AI

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 5.5K
Python *JavaScript *Node.JS *TypeScript *Natural Language Processing *
Из песочницы

В этой статье мы кратко рассмотрим технологию, которая лежит в основе ChatGPT — эмбеддинги, и напишем простой интеллектуальный поиск по кодовой базе проекта.

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 3

Истории

filebump — хостинг файлов по API / свой локальный upload.io

Время на прочтение 3 мин
Количество просмотров 1.7K
Анализ и проектирование систем *Node.JS *

У нас несколько сервисов, где пользователи загружают файлы, отправляют файлы, обмениваются файлами.

И делать в каждом сервисе свой сервер, где можно было бы получить ссылку на файл, передать через очередь, отправить, обработать - может быть не надо?

В одном сервисе - это загрузка аватарок, в другом - это различные пользовательские файлы, по сути в транзите, в третьем - это файлы, загружаемые для конфигурирования сервиса, используются время от времени.

В каждом сервисе надо было делать директорию для файлов, следить чтобы там было достаточно места, выставить права на запись, монтировать или синхронизировать с хранилищем по необходимости.

Поэтому появился filebump - простой http сервер, где мы можем загружать, хранить и скачивать файлы.

Читать далее
Всего голосов 7: ↑2 и ↓5 -3
Комментарии 10

Chrome Headless против cloudflare JS challenge

Уровень сложности Средний
Время на прочтение 41 мин
Количество просмотров 12K
JavaScript *Node.JS *Реверс-инжиниринг *
Из песочницы

Автоматизация сбора информации с различных ресурсов - обычная задача для людей разных сфер деятельности. Жаль, что не всегда бывает достаточно сделать простой GET запрос и разобрать полученный html. Веб-сайты, с которых собираются данные, принимают защитные меры для предотвращения автоматизированных запросов. Одной из таких мер является использование cloudflare. Сегодня мы посмотрим, как cloudflare выявляет ботов через javascript и коснёмся темы деобфускации скриптов.

Читать далее
Всего голосов 82: ↑82 и ↓0 +82
Комментарии 6

Разработка клиент-серверного приложения с помощью Next.js и TypeScript. Часть 2. Разработка клиента

Уровень сложности Сложный
Время на прочтение 33 мин
Количество просмотров 4.5K
Блог компании Timeweb Cloud Разработка веб-сайтов *JavaScript *Node.JS *TypeScript *
Туториал


Привет, друзья!


В этой серии из 2 статей-туториалов мы с вами продолжаем разрабатывать клиент-серверное (фуллстек — fullstack) приложение с помощью Next.js и TypeScript.



  1. Наше приложение будет представлять собой блог — относительно полноценную платформу для публикации, редактирования и удаления постов.
  2. Мы реализовали собственный сервис аутентификации на основе JSON Web Tokens и HTTP-куки.
  3. Данные пользователей и постов будут храниться в реляционной базе данных SQLite.

В первом туториале мы подготовили и настроили проект, а также реализовали серверную часть приложения с помощью интерфейса роутов (API Routes), во втором — разработаем клиента и проверим работоспособность приложения.


Обратите внимание: данный туториал рассчитан на разработчиков, которые имеют некоторый опыт работы с React и Node.js.


Для тех, кого интересует только код, вот соответствующий репозиторий.


Интересно? Тогда прошу под кат.

Читать дальше →
Всего голосов 22: ↑19 и ↓3 +16
Комментарии 2

10 советов по оптимизации приложения NodeJS

Время на прочтение 4 мин
Количество просмотров 3.8K
Node.JS *
Туториал
Recovery mode

Давайте рассмотрим список основных советов по оптимизации приложений NodeJS, статья больше служит полезным справочником чем полноценным практическим пособием.

Node.js — это мощная и универсальная платформа, которая широко используется для создания высокопроизводительных приложений, интенсивно использующих данные. Однако, как и в случае с любой другой технологией, существуют способы оптимизации...

Читать далее
Всего голосов 17: ↑1 и ↓16 -15
Комментарии 4

Масштабирование NodeJS приложений, теория и практика

Время на прочтение 5 мин
Количество просмотров 4.9K
JavaScript *Nginx *Node.JS *API *
Из песочницы

Масштабирование приложения Node.js может быть сложной задачей, но с правильными методологиями это можно сделать эффективно и результативно. В этой статье мы обсудим несколько методов масштабирования приложений Node.js, включая горизонтальное масштабирование, вертикальное масштабирование и балансировку нагрузки. Посмотрим практические примеры.

Читать далее
Всего голосов 12: ↑3 и ↓9 -6
Комментарии 4

Групповой видеозвонок на сайт

Время на прочтение 12 мин
Количество просмотров 3K
JavaScript *Node.JS *ReactJS *TypeScript *
Ретроспектива
Из песочницы

Ещё одна история изучения и использования технологии WebRTC (Web Real-time Communication). Краткое описание создания готовой библиотеки для её переиспользования в разных проектах.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 2

Разработка клиент-серверного приложения с помощью Next.js и TypeScript. Часть 1. Разработка сервера

Время на прочтение 25 мин
Количество просмотров 6.5K
Блог компании Timeweb Cloud Разработка веб-сайтов *JavaScript *Node.JS *TypeScript *
Туториал


Привет, друзья!


В этой серии из 2 статей-туториалов мы с вами разработаем клиент-серверное (фуллстек — fullstack) приложение с помощью Next.js и TypeScript.



  1. Наше приложение будет представлять собой блог — относительно полноценную платформу для публикации, редактирования и удаления постов.
  2. Мы реализуем собственный сервис аутентификации на основе JSON Web Tokens и HTTP-куки.
  3. Данные пользователей и постов будут храниться в реляционной базе данных SQLite.

В первом туториале мы подготовим и настроим проект, а также реализуем серверную часть приложения с помощью интерфейса роутов (API Routes), во втором — разработаем клиента и проверим работоспособность приложения.


Обратите внимание: данный туториал рассчитан на разработчиков, которые имеют некоторый опыт работы с React и Node.js.


Для тех, кого интересует только код, вот соответствующий репозиторий.


Интересно? Тогда прошу под кат.

Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 5

Рекурсивные регулярные выражения

Время на прочтение 3 мин
Количество просмотров 6.2K
C++ *Node.JS *API *IT-компании
Аналитика

Принялось решение добавить регулярные выражения в свой язык программирования. По началу я подумал, что мне совершенно незачем в них разбираться и в интернете, наверняка, уже есть полно готовых библиотек. Стал искать, нашёл какие-то осколки кода на С++, которые ничего не дают. Пришлось самому разобраться, что такое регулярные выражения тут. Ради спортивного интереса, я решил сделать свою библиотеку на С++.

Стал делать и подумал, а почему бы мне не добавить туда своих тараканов. Я решил добавить две конструкции:

{namesubexpression} - вызов под выражения по имени "namesubexpression",
($namesubexpression:BodyExpression) - описание под выражения с именем "namesubexpression".

Само описание под выражения может встречаться в любом месте структуры регулярного выражения и игнорируется при поиске, подобно закоментированым: (#MeComment).
Сразу же возникает проблема бесконечной рекурсии.
Вот пример рекурсивного регулярного выражения, который недопустим: ($E:{E}){E}

Конечно, я сделал стадию валидации и такие поисковые конструкции просто не допустятса в поисковую машину. Также валидацию не пройдет выражение, которое содержит в себе вызов не описанного под выражения.

Вот пример текста, который можно спарсить рекурсивным регулярным выражением (РРВ): [[[[[A]]]]]
А вот его РРВ: ($RRE:\[({RRE}|A)\]){RRE}

Я также решил добавить три зарезервированные конструкции:
{:String} соответствует выражению: (("(\\.|[^"])*")|('(\\.|[^'])*'))
{:Digit} соответствует выражению: (-?[0-9]+.?[0-9]*[Ee]?-?[0-9]*)
{:Name} соответствует выражению: ([A-Za-z][A-Za-z0-9]*)
Но их поисковая система не использует структурные элементы аналогичных выражений, а организованна встроенным машинным поиском, который работает значительно быстрее и возвращает одну целую строку текста, в которой содержится всё тело найденного соответствия а не части для каждого компонента в аналогичных регулярных выражениях.

Читать далее
Всего голосов 9: ↑5 и ↓4 +1
Комментарии 20

Node.js наизнанку: не все происходит в пуле потоков

Время на прочтение 5 мин
Количество просмотров 6.2K
JavaScript *Node.JS *
Из песочницы
Перевод

Node.js это кроссплатформенная среда выполнения JavaScript с открытым исходным кодом для выполнения JavaScript вне браузера. Он поддерживается движком Google V8, что делает его чрезвычайно производительным.

Асинхронная среда выполнения, управляемая событиями

Одно из наиболее распространенных утверждений, с которым мы сталкиваемся при знакомстве с Node, заключается в том, что он выполняется в одном потоке. Тем не менее каждый может задаться вопросом, как это возможно, что Node является одним из самых популярных инструментов для создания быстрых и масштабируемых API?

Технически, тот факт, что Node.js использует один поток не на 100% верно. Node.js на самом деле использует много потоков, но цикл событий (Event Loop - о котором мы упомянем позже), и пользовательский код выполняются в одном потоке. Если мы ознакомимся с документацией, то увидим, что Node.js использует управляемым событиями неблокирующую модель ввода-вывода (event-driven, non-blocking I/O model), которая делает его легким и эффективным.

Что такое управляемая событиями неблокирующая модель ввода-вывода?

Согласно руководству по Node.js, блокирующие методы выполняются синхронно, а неблокирующие методы выполняются асинхронно. Предположим, что нам нужно написать некоторый код, чтобы прочитать содержимое файла и распечатать его в консоли. Есть два способа сделать это в узле: синхронно и асинхронно.

Давайте сначала посмотрим синхронную версию:

В приведённом ниже коде происходит следующее: во-первых, нужно подключить модуль FS. Во второй строке вызывается метод readFileSync, и результат сохраняется в переменной data. Основной поток Node.js блокирует эту строку до тех пор, пока не будет прочитано все содержимое файла. Затем содержимое выводиться в консоль, и, в самом конце будет выведено в консоль “Done”.

Читать далее
Всего голосов 16: ↑12 и ↓4 +8
Комментарии 4

Node.js: Клонирование ключей. Is eval() evil?

Время на прочтение 5 мин
Количество просмотров 2.6K
Блог компании Тензор Высокая производительность *JavaScript *Программирование *Node.JS *
Туториал

На примере простой задачи клонирования ключей объекта посмотрим, есть ли реальные альтернативы по производительности столь презираемой JavaScript-разработчиками функции eval().

Подобная задача возникает, если оригинальное значение ключа надо оставить у объекта, а как-то обработанное - положить рядом в новый соответствующий ключ. То есть, для начала, из {"a" : 1, "b" : 2} надо получить {"a" : 1, "a-copy" : 1, "b" : 2, "b-copy" : 2}.

Пару лет назад я уже рассказывал, почему максимальная производительность подобных операций на JavaScript важна для нашего сервиса потокового анализа логов PostgreSQL, как можно поускорять парсинг с помощью WebAssembly, и вот сегодня - продолжение.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 12

Краткий обзор Bun — новой среды выполнения JavaScript

Время на прочтение 8 мин
Количество просмотров 7.6K
Блог компании Timeweb Cloud Разработка веб-сайтов *JavaScript *Node.JS *TypeScript *
Обзор


Привет, друзья!


В этой статья я немного расскажу вам о Bun — новой среде выполнения JavaScript-кода.


Обратите внимание: Bun — это экспериментальная штуковина, поэтому использовать ее для разработки производственных приложений пока не рекомендуется.


К слову, в рейтинге "Восходящие звезды JavaScript 2022" Bun стал победителем в номинации "Самые популярные проекты".


Интересно? Тогда прошу под кат.

Читать дальше →
Всего голосов 24: ↑23 и ↓1 +22
Комментарии 6

Экстремально уменьшаем размер NPM пакета

Время на прочтение 21 мин
Количество просмотров 6.4K
Разработка веб-сайтов *JavaScript *Node.JS *TypeScript *
Туториал

Однажды я захотел создать небольшую NPM библиотеку по всем “best practices” - с покрытием тестами, написанием документации, ведением нормального версионирования и changelog'а и т.п. Даже написал пару статей, которые в деталях описали, какие вопросы решает библиотека и как её использовать. И одной из интересных для меня меня задач при создании библиотеки была задача по максимальному уменьшению размера выходного NPM пакета - того, что в конечном итоге в теории будет использовать другой программист. И в этой статье я бы хотел описать, к каким методам я прибегал для того, чтобы достигнуть желанной цели.

Читать далее
Всего голосов 13: ↑10 и ↓3 +7
Комментарии 32

Принципы SOLID коротко и простым языком (на JS)

Время на прочтение 2 мин
Количество просмотров 19K
JavaScript *Node.JS *Solidity *
Из песочницы

SOLID это аббревиатура, которая обозначает пять принципов объектно-ориентированного программирования. Эти принципы помогают разработчикам писать качественный и поддерживаемый код. Вот как выглядят эти принципы.

Читать далее
Всего голосов 21: ↑10 и ↓11 -1
Комментарии 23

Пошаговая инструкция: как с Node.js организовать иконки из Figma в проекте

Время на прочтение 28 мин
Количество просмотров 5.2K
Блог компании Joom Работа с иконками *JavaScript *Node.JS *Usability *
Туториал


Эта статья подробно описывает создание небольшого скрипта на Node.js для выгрузки векторных иконок из Figma в проект, а также универсального компонента для разных видов иконок, который удобно использовать в своём приложении.


Скрипт может пригодиться командам, которые ещё не определились с общим подходом к использованию и хранению иконок в проекте, и тем, кто стремится автоматизировать этот процесс.


Под катом – довольно длинный (мы предупредили!) и подробный текст, но с большим количеством полезного кода.

Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 2

Как (и зачем) я писал README в Jupyter-ноутбуке для Node.js-приложения

Время на прочтение 4 мин
Количество просмотров 1.6K
Ненормальное программирование *Python *Node.JS *

На одном из прошлых мест работы я поддерживал консольную Node.js-утилиту, которая публиковалась в NPM. Утилита использовала commander, содержала довольно большое количество подкоманд, и все они требовали описания в README-файле, которое нужно было не забывать обновлять при каждом изменении. Несколько лет спустя я нашел решение, используя не слишком привычные для экосистемы Node.js технологии.

В этой статье: много моей любви к Jupyter-подобным ноутбукам, инструкция про то, как затащить Python-пакет в NPM и чуть-чуть анализа трекерной музыки.

Читать далее
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 2

Пишем продвинутый планировщик с использованием React, Nest и NX. Часть 3: работа с задачами

Время на прочтение 8 мин
Количество просмотров 2.7K
Блог компании Домклик Node.JS *MongoDB *ReactJS *TypeScript *
Туториал

Друзья, всем привет! Меня зовут Игорь Карелин, я frontend-разработчик в компании Домклик. В прошлой части мы разобрали, как создать аутентификацию с помощью библиотеки Passport, а сегодня мы рассмотрим такие манипуляции, как добавление, редактирование, удаление и получение задач. Для начала давайте разберём HTTP и некоторые типы запросов.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 0

Вклад авторов

Работа