All streams
Search
Write a publication
Pull to refresh
3
0
Send message

Посмотрите ради интереса alpine, vue, svelte... Я после таких тулов, на проектах с реакт, как будто ем костлявую рыбу)

Я всё это видел много лет назад, и vue 2 и vue 3, и svelte и angular и inferno и т.д. и т.п.. Что только я не видел за последние 13 лет. И пробовал создавать проекты на них. Но react + mobx по сей день максимально удобны для разработки.

Не говоря уже о фундаментально устаревших вещах как virtual dom

Дайте мне копию синтаксиса React и MobX, а под капотом не будет virtual dom, да и на самом деле пофигу что там под капотом, если по реальным замерам оно будет реально работать быстрее, есть меньше памяти и т.п. То я сразу же на это пересяду без задних мыслей) Но увы, такого пока нет) А самому писать лень, ибо и так всё более чем устраивает мои потребности)

ну вот тут оно же)) люди живут без этого)

Я в своё время реализовывал его и для классовых компонентов, это легко

export class MyComponent extends BaseComponent {
  constructor() {
    this.useEfftct(() => {...});
    this.useEfftct(() => {...}, () => [this.props.name]);
  }
}

По смыслу, иммутабельность говорит о том, что с памятью делать особо ни чего не нужно.

Эмм нет. С каких пор полное копирование участка памяти(объекта) с целью его изменения означает "с памятью делать особо ни чего не нужно"? Вы знаете как компьютер вообще работает?) Что есть память, у нее есть адреса, в эти адресы вы можете засовывать нолики и единички, есть стэк, есть куча(heap), стэк - быстрый, heap - медленный. Объекты в JS - heap.И всё это не бесплатно, за это мы платим процессорными тактами, пропускной способность шины RAM <==> CPU и т.д.. Шина данных в свою очередь это дорожки на плате, на которых в каждый момент времени либо есть напряжение, либо нет, чем больше этих дорожек, тем больше мы можем данных передать/прочитать за 1 рабочий такт. Но и тут не всё так просто, мы ограничены периферией процессора, у нее тоже не бесконечное кол-во ножек(на которые можно подавать 0...3.3в и которые могут читать 0 и 1, когда на ножку подали 0 или 3.3в), а так же возможностями мат. платы, плат RAM и т.п. На каждом пути нас встречают ограничения, как по частотам, так и по таймингам. А ещё нас встречают физические ограничения, скорость нарастания напряжения не бесконечная, много влияний паразитных ёмкостей и т.п.
Ах да, а ещё в JS есть garbage collecor, работа которого тоже не бесплатна. Поэтому когда речь про иммутабильность, то с памятью очень даже много всего нужно делать(и не только с памятью).
Чтобы ваше утверждение стало частично верным, нужны выключить garbage collector. Тогда да, та память которая уже была выделена по какой-то объект так и останется мусорной и с ней ничего уже делать никто не будет, просто каждый раз выделяете новую память, не очищая уже ранее выделенную и неактуальную. Но вот ведь не задача, у вас просто оперативка сразу закончится и всё, синий экран смерти.

Человек правильно сказал, вот его цитата:

иммутабельность данных, когда при каждом изменении несчастный массив/объект деструктурируют и собирают заново

при этом вы продолжаете использовать react)))

Так 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. Это тоже объясняет ваш ход мыслей.

KISS, Keep It Simple, Stupid

Вот вот, это самый главный и важный принцип в разработке любого ПО.

Нафига redux/rtk когда есть Zustand

Zustand - полу мера, да он немного получше redux/rtk, но ему далеко до MobX. А какой смыл использовать ни рыбу ни мясо, когда можно взять отличный инструмент и не страдать.

Я использую RxJS и Inversify в связке с react

В принципе если машину толкать руками она тоже будет ехать (это RxJS и Inversify), только вопрос зачем?) Когда можно заправить ее бензином и завести (это MobX).

RxJS + Inversify позволяет хранить структуру данных вместе с методами их обработки.

Прикольно) MobX тоже) Как бы by design) Ну и так далее по тексту) Он покрывает все кейсы которые только захотите реализовать, с 0 оверхедом по коду и с максимально возможной читаемостью и понятностью кода. Ибо по сути он тупо нативный.

Осильте уже что-то сложнее MobX

Зачем? А главное нафига?) Что-бы что? Нет ни одного кейса, где применение Redux и т.п. будет лучше, чем MobX. Уж тем более с точки зрения красоты, читаемости и понятности кода.

Погодите, а как же redux, который как раз выполняет функцию хранения данных. Мне вообще довольно сложно представить использование реакта без связки с редаксом.

Открываю глаза, есть такая штука, называется MobX. И все проблемы у неудобства управления состоянием сразу как рукой снимет.

А вот эта вот иммутабельность данных

Но разве это не выглядит как огроменный костылище?

Да, вы абсолютно правы. Поэтому все адекватные люди давно используют MobX в связке с реактом.

Яндекс - динозавры, записал.

Как бы да. Более того, там полно говнокода, полно легаси, полно бюрократии, а ещё ЗП самые низкие по рынку. Яндекс это вообще даже близко не dream company.

Тут видимо я уже динозавр

Судя по вашему профилю, вам всего лишь 25 лет (2000 год рождения), т.е. вы только что начали путь программиста. Это я динозавр, я уже почти 15 лет в разработке. И то, для меня БЭМ это уже что-то из эпохи динозавров. Поидее когда вы только начали писать первые строки коммерческого кода БЭМ уже был похоронен) Ну в 99% проектов)

если требуется быстрый старт проекта и к примеру нет дизайнера.

Для этого существуют много много лет Ant Design, Bootstrap, MaterialUI и т.д. и т.п. Никакой tailwind с этим конкурировать не может, потому что это не только стили, а это полноценные компоненты с реализованным функционалом. Вот это по настоящему быстрый старт.

 но почему tailwind является ошибкой?

Вот по этому:

@apply bg-transparent border-2 border-white text-white py-3 px-6 rounded-lg bg-transparent border-2 border-white text-white py-3 px-6 rounded-lg bg-transparent border-2 border-white text-white py-3 px-6 rounded-lg bg-transparent border-2 border-white text-white py-3 px-6 rounded-lg;

Ну как раз таки есть места и проекты где юзается

Ну это динозавры. Которых 1% от силы.

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

Так же это прямо с сайта 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 давным давно более чем полноценный. Поэтому это сочетание делает реакт не просто реактом, а выводит его на совершенно другой уровень.

watchEffect == autorun из MobX
watch == reaction из MobX

Просто тем, что это 2 метода, а внутри useEffect всё упаковано в одном, ну все переменные изолированы в одной области видимости.

Просто удобнее написание и всё. А сверхспособностей нет.

useEffect(() => {
  const interval = setInterval(state.fetchData, 5000);
  return () => clearInterval(interval); // When component unmount
}, []);

 Во Vue реализована настоящая модель реактивности

Да, как и в MobX.
А хуки, это смотря как ими пользоваться и для чего.

Information

Rating
Does not participate
Registered
Activity

Specialization

Frontend Developer
Lead
TypeScript
JavaScript
React
Node.js
MobX