Посмотрите ради интереса alpine, vue, svelte... Я после таких тулов, на проектах с реакт, как будто ем костлявую рыбу)
Я всё это видел много лет назад, и vue 2 и vue 3, и svelte и angular и inferno и т.д. и т.п.. Что только я не видел за последние 13 лет. И пробовал создавать проекты на них. Но react + mobx по сей день максимально удобны для разработки.
Не говоря уже о фундаментально устаревших вещах как virtual dom
Дайте мне копию синтаксиса React и MobX, а под капотом не будет virtual dom, да и на самом деле пофигу что там под капотом, если по реальным замерам оно будет реально работать быстрее, есть меньше памяти и т.п. То я сразу же на это пересяду без задних мыслей) Но увы, такого пока нет) А самому писать лень, ибо и так всё более чем устраивает мои потребности)
ну вот тут оно же)) люди живут без этого)
Я в своё время реализовывал его и для классовых компонентов, это легко
По смыслу, иммутабельность говорит о том, что с памятью делать особо ни чего не нужно.
Эмм нет. С каких пор полное копирование участка памяти(объекта) с целью его изменения означает "с памятью делать особо ни чего не нужно"? Вы знаете как компьютер вообще работает?) Что есть память, у нее есть адреса, в эти адресы вы можете засовывать нолики и единички, есть стэк, есть куча(heap), стэк - быстрый, heap - медленный. Объекты в JS - heap.И всё это не бесплатно, за это мы платим процессорными тактами, пропускной способность шины RAM <==> CPU и т.д.. Шина данных в свою очередь это дорожки на плате, на которых в каждый момент времени либо есть напряжение, либо нет, чем больше этих дорожек, тем больше мы можем данных передать/прочитать за 1 рабочий такт. Но и тут не всё так просто, мы ограничены периферией процессора, у нее тоже не бесконечное кол-во ножек(на которые можно подавать 0...3.3в и которые могут читать 0 и 1, когда на ножку подали 0 или 3.3в), а так же возможностями мат. платы, плат RAM и т.п. На каждом пути нас встречают ограничения, как по частотам, так и по таймингам. А ещё нас встречают физические ограничения, скорость нарастания напряжения не бесконечная, много влияний паразитных ёмкостей и т.п. Ах да, а ещё в JS есть garbage collecor, работа которого тоже не бесплатна. Поэтому когда речь про иммутабильность, то с памятью очень даже много всего нужно делать(и не только с памятью). Чтобы ваше утверждение стало частично верным, нужны выключить garbage collector. Тогда да, та память которая уже была выделена по какой-то объект так и останется мусорной и с ней ничего уже делать никто не будет, просто каждый раз выделяете новую память, не очищая уже ранее выделенную и неактуальную. Но вот ведь не задача, у вас просто оперативка сразу закончится и всё, синий экран смерти.
Человек правильно сказал, вот его цитата:
иммутабельность данных, когда при каждом изменении несчастный массив/объект деструктурируют и собирают заново
Так React доставляет мне ровно 0 неудобств, только даёт плюсы, а удобнее JSX'a пока ничего не придумали. Я же его использую по назначению, как view. Для всего остального есть MobX) Поэтому мне и без разницы какой версией реакта пользоваться, 16, 17, 18, 19, 20, ..100 ) Всё что нужно для полноценной разработки любого приложения есть в 16 версии. Почему именно 16? Просто потому что useEffect удобнее чем componentDidMount, componentDidUpdate, componentWillUnmount. А аналог constructor это useState(() => {...})
Я использовал как MobX, так и Redux. И ещё кучу менеджеров состояний.
Я тоже.
И мне было всегда удобно, не превращался код в кашу
Ага, а я живу на Марсе. Разница в коде и в том, как принято его писать используя Redux и Mobx просто колоссальная, это вообще небо и земля.
Что я делаю не так? Как закривить руки, чтобы прямо в кашу?
Всё просто, вы либо на самом деле не работали на проектах где есть redux и т.п., либо дальше Hello world ваши проекты не уходили. Потому что только тот кто реально не работал с redux и mobx не видит разницу. а уж тем более тот, кто говорит что проект где redux это не говнокод с кашей, так он вообще в принципе не работал на проекте с redux. Либо его представления о хорошем коде диаметрально противоположны хорошему коду, поэтому эта каша и говнокод не кажется кашей и говнокодом.
Плюс у вас написано, что вы Fullstack-программист, а front-end. Это тоже объясняет ваш ход мыслей.
Zustand - полу мера, да он немного получше redux/rtk, но ему далеко до MobX. А какой смыл использовать ни рыбу ни мясо, когда можно взять отличный инструмент и не страдать.
В принципе если машину толкать руками она тоже будет ехать (это RxJS и Inversify), только вопрос зачем?) Когда можно заправить ее бензином и завести (это MobX).
RxJS + Inversify позволяет хранить структуру данных вместе с методами их обработки.
Прикольно) MobX тоже) Как бы by design) Ну и так далее по тексту) Он покрывает все кейсы которые только захотите реализовать, с 0 оверхедом по коду и с максимально возможной читаемостью и понятностью кода. Ибо по сути он тупо нативный.
Зачем? А главное нафига?) Что-бы что? Нет ни одного кейса, где применение Redux и т.п. будет лучше, чем MobX. Уж тем более с точки зрения красоты, читаемости и понятности кода.
Погодите, а как же redux, который как раз выполняет функцию хранения данных. Мне вообще довольно сложно представить использование реакта без связки с редаксом.
Открываю глаза, есть такая штука, называется MobX. И все проблемы у неудобства управления состоянием сразу как рукой снимет.
Как бы да. Более того, там полно говнокода, полно легаси, полно бюрократии, а ещё ЗП самые низкие по рынку. Яндекс это вообще даже близко не dream company.
Тут видимо я уже динозавр
Судя по вашему профилю, вам всего лишь 25 лет (2000 год рождения), т.е. вы только что начали путь программиста. Это я динозавр, я уже почти 15 лет в разработке. И то, для меня БЭМ это уже что-то из эпохи динозавров. Поидее когда вы только начали писать первые строки коммерческого кода БЭМ уже был похоронен) Ну в 99% проектов)
если требуется быстрый старт проекта и к примеру нет дизайнера.
Для этого существуют много много лет Ant Design, Bootstrap, MaterialUI и т.д. и т.п. Никакой tailwind с этим конкурировать не может, потому что это не только стили, а это полноценные компоненты с реализованным функционалом. Вот это по настоящему быстрый старт.
Вы опять выдираете пример, где все плохо. Так можно с любым языков/фреймворком.
Так же это прямо с сайта Tailwind, там на скриншоте видно подсказку "Why Tailwind CSS?" откройте консоль и проверьте.
Вот она, дичь во всей красе.
Мне с Tailwind не надо тащить всю экосистему React и т.п., я могу на голом HTML писать или на своем фреймворке whatever
А причем тут React? Вы тащите весь tailwind) А CSS modules вообще не привязан к реакту. Везде где есть JS и Webpack/Vite/Rollup и т.п. есть css modules.
как много "злых" комментов Все совершают ошибки, такие статьи помогают их избегать.
Да, вы абсолютно правы. Но есть одно но, вот оно:
Меня зовут Женя, сейчас я работаю разработчиком в Google. В стартапах был в роли CTO более 4 лет, а всего в IT — уже больше 9 лет, преимущественно в крупных компаниях и в области веб-разработки.
Если бы в статье вот этого бы не было, а всё ограничилось бы, чем-то типо "Меня зовут Женя, я разработчик, и хочу поделиться с вами моим опытом", то не бы "злых" комментов.
Вот поэтому вопрос что мешало разработчикам Реакта сразу сделать нормально?
У меня такой же вопрос, но в целом наплевать ибо и так 10 лет MobX делает React прекрасным. Поэтому мне(да и всем кто юзает MobX) нет разницы какая версия реакта, 16, 17, 18, хоть 25. И так всё что нужно там есть давным давно. Как view свой react уже давно более чем полноценный, как инструмент для управления состоянием MobX давным давно более чем полноценный. Поэтому это сочетание делает реакт не просто реактом, а выводит его на совершенно другой уровень.
Я всё это видел много лет назад, и vue 2 и vue 3, и svelte и angular и inferno и т.д. и т.п.. Что только я не видел за последние 13 лет. И пробовал создавать проекты на них. Но react + mobx по сей день максимально удобны для разработки.
Дайте мне копию синтаксиса React и MobX, а под капотом не будет virtual dom, да и на самом деле пофигу что там под капотом, если по реальным замерам оно будет реально работать быстрее, есть меньше памяти и т.п. То я сразу же на это пересяду без задних мыслей) Но увы, такого пока нет) А самому писать лень, ибо и так всё более чем устраивает мои потребности)
Я в своё время реализовывал его и для классовых компонентов, это легко
Эмм нет. С каких пор полное копирование участка памяти(объекта) с целью его изменения означает "с памятью делать особо ни чего не нужно"? Вы знаете как компьютер вообще работает?) Что есть память, у нее есть адреса, в эти адресы вы можете засовывать нолики и единички, есть стэк, есть куча(heap), стэк - быстрый, heap - медленный. Объекты в JS - heap.И всё это не бесплатно, за это мы платим процессорными тактами, пропускной способность шины RAM <==> CPU и т.д.. Шина данных в свою очередь это дорожки на плате, на которых в каждый момент времени либо есть напряжение, либо нет, чем больше этих дорожек, тем больше мы можем данных передать/прочитать за 1 рабочий такт. Но и тут не всё так просто, мы ограничены периферией процессора, у нее тоже не бесконечное кол-во ножек(на которые можно подавать 0...3.3в и которые могут читать 0 и 1, когда на ножку подали 0 или 3.3в), а так же возможностями мат. платы, плат RAM и т.п. На каждом пути нас встречают ограничения, как по частотам, так и по таймингам. А ещё нас встречают физические ограничения, скорость нарастания напряжения не бесконечная, много влияний паразитных ёмкостей и т.п.
Ах да, а ещё в JS есть garbage collecor, работа которого тоже не бесплатна. Поэтому когда речь про иммутабильность, то с памятью очень даже много всего нужно делать(и не только с памятью).
Чтобы ваше утверждение стало частично верным, нужны выключить garbage collector. Тогда да, та память которая уже была выделена по какой-то объект так и останется мусорной и с ней ничего уже делать никто не будет, просто каждый раз выделяете новую память, не очищая уже ранее выделенную и неактуальную. Но вот ведь не задача, у вас просто оперативка сразу закончится и всё, синий экран смерти.
Человек правильно сказал, вот его цитата:
Так React доставляет мне ровно 0 неудобств, только даёт плюсы, а удобнее JSX'a пока ничего не придумали. Я же его использую по назначению, как view. Для всего остального есть MobX) Поэтому мне и без разницы какой версией реакта пользоваться, 16, 17, 18, 19, 20, ..100 ) Всё что нужно для полноценной разработки любого приложения есть в 16 версии. Почему именно 16? Просто потому что useEffect удобнее чем componentDidMount, componentDidUpdate, componentWillUnmount. А аналог constructor это useState(() => {...})
Я тоже.
Ага, а я живу на Марсе. Разница в коде и в том, как принято его писать используя Redux и Mobx просто колоссальная, это вообще небо и земля.
Всё просто, вы либо на самом деле не работали на проектах где есть redux и т.п., либо дальше Hello world ваши проекты не уходили. Потому что только тот кто реально не работал с redux и mobx не видит разницу. а уж тем более тот, кто говорит что проект где redux это не говнокод с кашей, так он вообще в принципе не работал на проекте с redux. Либо его представления о хорошем коде диаметрально противоположны хорошему коду, поэтому эта каша и говнокод не кажется кашей и говнокодом.
Плюс у вас написано, что вы Fullstack-программист, а front-end. Это тоже объясняет ваш ход мыслей.
Вот вот, это самый главный и важный принцип в разработке любого ПО.
Zustand - полу мера, да он немного получше redux/rtk, но ему далеко до MobX. А какой смыл использовать ни рыбу ни мясо, когда можно взять отличный инструмент и не страдать.
В принципе если машину толкать руками она тоже будет ехать (это RxJS и Inversify), только вопрос зачем?) Когда можно заправить ее бензином и завести (это MobX).
Прикольно) MobX тоже) Как бы by design) Ну и так далее по тексту) Он покрывает все кейсы которые только захотите реализовать, с 0 оверхедом по коду и с максимально возможной читаемостью и понятностью кода. Ибо по сути он тупо нативный.
Зачем? А главное нафига?) Что-бы что? Нет ни одного кейса, где применение Redux и т.п. будет лучше, чем MobX. Уж тем более с точки зрения красоты, читаемости и понятности кода.
Открываю глаза, есть такая штука, называется MobX. И все проблемы у неудобства управления состоянием сразу как рукой снимет.
Да, вы абсолютно правы. Поэтому все адекватные люди давно используют MobX в связке с реактом.
Как бы да. Более того, там полно говнокода, полно легаси, полно бюрократии, а ещё ЗП самые низкие по рынку. Яндекс это вообще даже близко не dream company.
Судя по вашему профилю, вам всего лишь 25 лет (2000 год рождения), т.е. вы только что начали путь программиста. Это я динозавр, я уже почти 15 лет в разработке. И то, для меня БЭМ это уже что-то из эпохи динозавров. Поидее когда вы только начали писать первые строки коммерческого кода БЭМ уже был похоронен) Ну в 99% проектов)
Для этого существуют много много лет Ant Design, Bootstrap, MaterialUI и т.д. и т.п. Никакой tailwind с этим конкурировать не может, потому что это не только стили, а это полноценные компоненты с реализованным функционалом. Вот это по настоящему быстрый старт.
Вот по этому:
Ну это динозавры. Которых 1% от силы.
Так же это прямо с сайта Tailwind, там на скриншоте видно подсказку "Why Tailwind CSS?" откройте консоль и проверьте.
А причем тут React? Вы тащите весь tailwind) А CSS modules вообще не привязан к реакту. Везде где есть JS и Webpack/Vite/Rollup и т.п. есть css modules.
Да, вы абсолютно правы. Но есть одно но, вот оно:
Если бы в статье вот этого бы не было, а всё ограничилось бы, чем-то типо "Меня зовут Женя, я разработчик, и хочу поделиться с вами моим опытом", то не бы "злых" комментов.
Есть результаты?
У меня такой же вопрос, но в целом наплевать ибо и так 10 лет MobX делает React прекрасным. Поэтому мне(да и всем кто юзает MobX) нет разницы какая версия реакта, 16, 17, 18, хоть 25. И так всё что нужно там есть давным давно. Как view свой react уже давно более чем полноценный, как инструмент для управления состоянием MobX давным давно более чем полноценный. Поэтому это сочетание делает реакт не просто реактом, а выводит его на совершенно другой уровень.
watchEffect == autorun из MobX
watch == reaction из MobX
Просто тем, что это 2 метода, а внутри
useEffect
всё упаковано в одном, ну все переменные изолированы в одной области видимости.Просто удобнее написание и всё. А сверхспособностей нет.
Да, как и в MobX.
А хуки, это смотря как ими пользоваться и для чего.