Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 February 05

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Dmitry Bondar
а насколько это медленнее чем какой-нибудь «правильный подход»? Есть какие-то замеры/сравнения?
Ну никто в здравом уме древовидные структуры типа дерева роутов полным перебором не обходит. Тем более полным перебором с регулярками.


Поиск по дереву в среднем - O(log n), но опять же зависит от дерева. В случае с полным перебором O(n).
В случае экспреса O(n) надо еще помножить на сложность обработки регулярки, а она зависит от кол-ва символов в строке.
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Например если бы разработчики экспресса мало-мальски шарили в алгоритмах, то могли бы взять для роутинга тот же radix tree, который используется часто в IP-роутинге.

А если свою аппку писать на rpc, то, в принципе, весь роутинг можно уложить в хешмапу и будет O(1).
источник

Y

Yaroslav in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Ну никто в здравом уме древовидные структуры типа дерева роутов полным перебором не обходит. Тем более полным перебором с регулярками.


Поиск по дереву в среднем - O(log n), но опять же зависит от дерева. В случае с полным перебором O(n).
В случае экспреса O(n) надо еще помножить на сложность обработки регулярки, а она зависит от кол-ва символов в строке.
при каком количестве роутов логарифмическая сложность будет оптимальней линейной?
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Yaroslav
при каком количестве роутов логарифмическая сложность будет оптимальней линейной?
при любом >= 2
источник

Y

Yaroslav in NodeUA - JavaScript and Node.js in Ukraine
Alexander
при любом >= 2
понятно)
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
И где вы там увидели линейную сложность? Она там лишь один из множетелей.
источник

KR

Kostyantin Randomnam... in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Так вот - про роутинг в экспресах ваших.

Представьте что вы работаете в глово :). И доставляете заказ в квариру 245 по некоему адресу Васи Пупкина 1. В этом доме 10 подъездов, 10 этажей в каждом. Подумайте как бы вы искали нужную квартиру.

А теперь как ее ищет "экспресс". Экспресс-гловарь идет в первый подъезд. Поднимается на 1-й этаж. Смотрит номер каждой квартиры. Причем не просто смотрит, а сверяет её регуляркой. Если не подошло - двигается дальше на второй этаж первого подъезда. Там опять повторяет действия. Как только в первом подъезде квартиры закончились он идет, правильно, во второй подъезд.

И он это уже делает так 10 лет.
так багато хто робить, я б навіть сказав, що такий перебір це стандарт, а пошук по дереву це заоптимізована роутинг ліба
источник

VS

Vladimir Shorinov in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Экспресс - то сплошной кладезь приколов и примеров того, как писать не надо
Тоесть лучше без фреймворка или loopback ?
источник

KH

Kirill Hmelnitski in NodeUA - JavaScript and Node.js in Ukraine
Vladimir Shorinov
Тоесть лучше без фреймворка или loopback ?
nestjs или fastify как по мне, если всё же говорить о мейнстримных приличных решениях.
источник

VS

Vladimir Shorinov in NodeUA - JavaScript and Node.js in Ukraine
Kirill Hmelnitski
nestjs или fastify как по мне, если всё же говорить о мейнстримных приличных решениях.
Nest использует express как зависимость.
источник

KH

Kirill Hmelnitski in NodeUA - JavaScript and Node.js in Ukraine
Vladimir Shorinov
Nest использует express как зависимость.
fastify тоже умеет.
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Мне лупбэк больше неста нравится
источник

IJ

Islom Jumaniyozov in NodeUA - JavaScript and Node.js in Ukraine
Kirill Hmelnitski
nestjs или fastify как по мне, если всё же говорить о мейнстримных приличных решениях.
у nest под капотом по дефолту стоит express надо переключить его на fastify
источник

KH

Kirill Hmelnitski in NodeUA - JavaScript and Node.js in Ukraine
Illya Klymov
Мне лупбэк больше неста нравится
а чем loopbaсk может похвастаться?
источник

IJ

Islom Jumaniyozov in NodeUA - JavaScript and Node.js in Ukraine
loopback же тоже сверху Express
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Islom Jumaniyozov
loopback же тоже сверху Express
новый уже нет
источник

Y

Yaroslav in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
новый уже нет
так а что с линухов для домашнего уютного сервачка. Для облаков понятно.
Цент уже не наше всьо, дебиан?
источник

JK

Jasin Ko in NodeUA - JavaScript and Node.js in Ukraine
Yaroslav
так а что с линухов для домашнего уютного сервачка. Для облаков понятно.
Цент уже не наше всьо, дебиан?
арч)
источник

ДП

Дима Полос in NodeUA - JavaScript and Node.js in Ukraine
Нашел правила в описании канала, да, провтыкал, не специально. ИЗВИНИТЕ ((
источник

DB

Dmitry Bondar in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
новый уже нет
а новый это какой? смотрю доку 4ртой версии - написано based on Express
источник