Pull to refresh
16
0

Senior Frontend Developer

Send message

Превосходно, позвольте вам поаплодировать. А что насчёт пользователей? Реакт уже обогнали?

Ох не вам говорить о побеге от реальности... Сколько вы уже со своим $mol-ом носитесь? 6 лет, 7? А воз и ныне там

А почему ни слова о@preact/signals в 2024?

Всё-таки есть что-то неизменное в наше время. Во всём мире уже началась эпоха ИИ, а авторы битрикса всё так же мощно пытаются в рефакторинг...

...В свободное время... учить Битрикс... Да ещё и после Laravel... А вы знаете толк в извращениях!

До стх пор помню тот момент, когда после Битрикса попробовал Yii — этот странный восторг от того, что прямо на твоих глазах творится настоящая магия вместо привычной битриксовой имитации.

Имхо, Битрикс — прекрасный трамплин для маркетологов: вот они-то там точно получают мастер-класс. Для программиста же это лимбо.

Для полноты истории не хватает постскриптума, что через год-два клиенту пришлось обращаться к другой фирме и таки писать свой инструмент с нуля и по всем правилам. Потому что количество человекочасов на каждое новое расширение поделия Серёжи увеличивалось в геометрической прогрессии, и то, что раньше стоило 4 часа, теперь стоит все 40, а то и 80.

1) А как у вас npm install без actions/setup-node работает?

2) Если использовать actions/setup-node, то необходимости вызывать команду echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> .npmrcнет, т.к. экшн это делает по-умолчанию. Разве что переменная называется NODE_AUTH_TOKEN.

Импорты в ES2015+ существуют в таком виде потому что это необходимо браузерам для статического анализа файла и предзагрузки файлов-зависимостей. Только после этого происходит выстраивание полного AST программы, и начинается компиляция в байт-код. Именно поэтому не подходят варианты in situ, как в PHP или Java, именно поэтому отказались и от нодовского require, который подгружал файл-зависимость прямо на месте. И именно поэтому динамический импорт (который import()) — асинхронный.

Что касается использования файловой системы вместо модульной, то причина всё та же — браузер изначально работает с URL, что позволяет делать вот такие штуки:

import confetti from 'https://cdn.skypack.dev/canvas-confetti';

Как вы понимаете, сделать такое с модульной системой Java или PHP нереально — потребуется пакет-менеджер, в то время как JS успешно работает вообще без него. Можете взглянуть на Deno для примера.

состояние изменяется только с помощью чистых функций — операций (actions);

Маленькая поправочка: чистыми функциями в Redux являются, конечно же, редьюсеры, а не экшны. Экшн — это просто объект с данным, там никаких функций нет.

Просто идеальный комплект для быдлокодерства.

Набыдлокодить можно с чем угодно. И MobX/Redux Saga etc тут не спасут никак.


Там не "сильно много". Там "тьма" бойлерплейта.

Если по примеру рекомендаций в документации класть константы в один файл, редьюсеры в другой, а action creator-ы в третий — тогда да, чёрт ногу сломит, и довольно быстро. Не понимаю этого функционального деления. А если делить логически, то получаются небольшие аккуратные файлы, которые вряд ли будут больше классов MobX. Я ж говорю, всё зависит от прямоты рук.

Вы так говорите, как будто я его никогда не использовал ) Конечно, в курсе. Вот только нужен ли он? Зависит от задачи. Иногда проще считать данные прямо на месте, через useMemo.


К слову, реселект весит всего 800 байт, так что в плане размера всё довольно неплохо.

С прокси, наверное, вполне нормально, но когда там был объект, изображающий из себя массив, было больно )

Не дальновидный аргумент. А вместе со всякими сагами, ресектами и прочими библиотеками, которые необходимо использовать с Redux, те же 2.5kb останутся?

Честно скажу, что саги, реселекты etc точно так же не особо приветствую. По-моему, самое лучшее — это thunk и голый редакс. И нет, не могу сказать, что там сильно много бойлерплейта получается. Всё, как всегда, зависит от правильной структуры.


С появлением react хуков, это странно читать.

Ну, здесь речь изначально шла о Redux vs MobX. Но моё мнение, что да, с хуками всё та же проблема. У реакта и реакт-комьюнити почему-то большая склонность к магии в целом.


Те же саги — так и не понял их смысл. Санки и работают, и тестируются не хуже (а то и лучше). А весит эта библиотека что твой самолёт.


В общем-то, поэтому-то мне и нравится storeon — мало того, что он весит 180 байт, так ещё и простой как табуретка, и никаких дополнительных приблуд ему не нужно. Всё, что нужно, сразу есть.


Ну и мне, честно говоря, не понятно, что именно многие в MobX называют магией? Использовать обертку для наблюдения за изменением данных или что-то другое?

Ну, в целом, да, у меня первой вспоминается именно Observable Arrays. Помню, у меня довольно сильно подгорело, когда пришлось каждый раз этот дурацкий массив туда-сюда преобразовывать. При том, что Array.from тогда не сильно ещё использовался.


Вторым, кстати, был autorun. Именно с ним было связано моё впечатление, что с MobX тяжелее сделать что-то нестандартное.

Да чего вы так возбудились-то, будто я у вас священную корову только что отобрал :D


Лол, шта?? Как обычно пустые слова без конкретики.

Предлагаете пример с вас брать? Вы-то тут так много пруфов привели, что я снимаю шляпу :D


+15kb в обмен на невероятное удобство — смешно.

Мне становится жаль пользователей вашего продукта.


Тем более вы сэкономите их т.к. вы как минимум тупо по кол-ву кода сильно меньше будете писать используя MobX.

"Лол, шта?? Как обычно — пустые слова без конкретики"


Вообще никакой магнии.

Слова про Observable Arrays вы, видимо, специально игнорируете ))


Сочувствую

Спасибо, заберите обратно :D

А я вот считаю с точностью до наоборот :)


  • Во-первых, MobX в 7 раз толще Redux (15kb vs 2.5kb по версии Bundlephobia).
  • Во-вторых, при попытке сделать с ним что-то нестандартное он просто взрывается (ну, по крайней мере так было года три назад, когда я последний раз его трогал).
  • Ну и вообще, чем меньше магии, тем проще работать с инструментом. MobX в этом смысле магией забит под завязку. А где магия — там и костыли (Observable Arrays всё ещё там используются?)

Хотя, конечно, среди всех менеджеров состояния мой личный выбор — это вообще storeon. Маленький, но при этом мощный и ничем не уступает Redux, а где-то даже превосходит.

Первый вариант (2015 года) имел слишком малые возможности, а две последующих версии забраковали из-за проблем с оптимизацией в JS-движках. Из-за того, что декораторы про факту меняют базовую структуру класса, все оптимизации, построенные на статическом анализе структуры класса, рассыпаются, и в результате получается, что класс с декоратором работает в несколько раз медленнее, чем класс без декоратора. Ещё важно учитывать возможность транспайлинга декораторов: например, третья версия внесла очень большую сложность для Babel, и в конечном итоге была отклонена в том числе и по этой причине.


Нынешняя (четвёртая) редакция учитывает все проблемы предыдущих, так что, будем надеяться, в этот раз всё пройдёт хорошо, и мы, наконец, увидим декораторы в JS.

Какая-то детская викторина на уровне "Читал до я доки на MDN и reactjs.org", ни одного действительно интересного и нетривиального вопроса

А почему преобразование в реальный Array сделано через Array.prototype.slice, а не через стандартный Array.from?

А у меня вопрос: как вы без Typescript спустя год помните, что вообще должно вам с сервера прийти?

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity