node.js - предоставляет среду для исполнения js вне браузера. Таким образом, его нельзя сравнивать с реактом и вью, которые просто являются наборами инструментов, написанными на js. Оба инструмента могут исполняться как из браузера, так и напрямую с помощью node.js, так как что в условном Хроме, что в ноде внутри движок (обычно v8), который будет прогонять js скрипт.
На рынке Node.js разработчик обычно ассоциируется с back-end разработкой, то есть написанием серверной части приложений. Типичная задача для Node.js сервера (там где технология прям блестает) является BFF (Backend for frontend), то есть посредник между сервером, который будет отдавать данные с Базы данных и фронтом. На сервере помимо проксирования запросов может производиться SSR (server-side rendering), что дает возможность ускорить загрузку веб-страниц и прочего.
React и Vue в свою очередь являются интсрументам для написания Front-end части приложений. Частным случаем являются веб-сайты. Однако, с помощью обехи технологий можно так же писать мобильные приложения (React-native для React и Native-Script для Vue). + на React-Native в скором будуем можно будет писать приложения для любой платформы, будь то десктопы, маки или даже нинтендо свитч.
Если кто-то будет говорить, что реакт - говнокод, не слушайте. На любом языке можно говнячить (даже на хаскеле). Все от незнания и js не приговор. Если прям хочется контроля над кодом на уровне прекомпила - возьмите Typescript и будет полегче.
На самом деле, монады не так уж сложны.
Монада - это некий контейнер, содержащий значение. Ты можешь передать в монаду функцию, функция как-то применится к значению и на выходе будет монада с новым значением.
Например, хорошо известные всем джаваскриптерам конструкции типа arr.map(x => x * 2) - по сути, монады.
О, коллега и по JS, и по Хаскелю!
На самом деле контейнер, содержащий значение, это не совсем верно. Скорее правильно говорить о вычислениях в среде.
Вот тут это разбирается
https://www.ahnfelt.net/monads-forget-about-bind/
Т.е. у нас есть 3 функции, работающие со "средой":
fmap -- отображение морфизма с одной среды на другую среду
return -- погружение категории в среду.
join -- объединение или растворение категории в среде.
class Monad m where
fmap :: (a -> b) -> (m a -> m b)
join :: m (m a) -> m a
return :: a -> m a
Из этого легко собирается bind
(>>=) m f = join (fmap f m)
Где m и f -- соотвествтвующая пара функций. К примеру
getChar >>= putChar
Или, для наглядности,
(>>=) getChar putChar
Короче, работает мозголомно, но в соответствующие монады (вычислений со средой может быть множество видов) можно переписать любой императивный код.



IT-юмор
7.1K поста53.2K подписчиков
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору