Как стать автором
Обновить

Комментарии 12

Я все собирался найти и перечитать повнимательнее вашу предыдущую статью, а вы оказывается уже фреймворк запилили. Поставил вам лайки и звездочки везде, где смог, ибо «во-первых, это красиво»!!!

Спасибо! Вот предыдущая статья https://m.habr.com/ru/post/517078/
Примеры когда в ней устарели, ибо все те наработки мигрировали в whatsup, но мысли и рассуждения во многом остались прежними

Как я понял, бегло посмотрев на код, смысл всего этого очень прост: собираем и обходим в ширину генераторами приложение как дерево. Всё приложение работает как одна стейт-машина. Похоже что dom обновляется целиком (или реализация diff-рендеринга от меня ускользает). Много бойлерплейта для приложений, для реальных проектов код выйдет слишком многословным. В целом очень интересно, однозначно стоит украсть автора пару приёмов.
Как я понял, бегло посмотрев на код, смысл всего этого очень прост: собираем и обходим в ширину генераторами приложение как дерево.

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


Похоже что dom обновляется целиком (или реализация diff-рендеринга от меня ускользает)

Ускользнула) dom так же обновляется инкрементно, причем весь виртуальный дом, как в react не создается — только фрагмент относящийся к фракталу, в котором произошли изменения (загляните в раздел о мутаторах — там есть сильно упрощенный пример с тем как создается и в дальнейшем мутируется dom-элемент)


Много бойлерплейта для приложений, для реальных проектов код выйдет слишком многословным.

да, синтаксис генераторов и while(true) на первый взгляд вызывает ощущение шаблонности, с другой стороны while(true) — это управляющая конструкция "по умолчанию", в теле генератора можно целые сценарии и конечные автоматы описывать…


по генераторам — есть пропосал на добавление стрелочных генераторов (аналогов arrow func), но пока он не подает признаков жизни, видать генераторы как-то не зашли сообществу, возможно многие еще не раскусили всей их мощи, чтобы развитие языка в этом направлении как-то активизировалось


спасибо за фидбек! С уважением)

Хочется увидеть примеры использования фреймворка как исключительно менеджера состояния в паре с React. Ведь React — это не только движок рендеринга, но и обширная экосистема готовых компонентов.

Whatsup изначально задумывался не для работы в паре с React, а как самостоятельный инструмент, диктующий архитектурные правила построения приложения. Прикрутить его конечно можно, но это будет сродни басне про ужа и ежа. Для React есть множество хороших стейт-менеджеров или вы хотите потестить именно управление стейтом с помощью генераторов?

Звучит интересно, попробую для ближайшего пет-проекта. Наверняка есть какие-то подводные грабли, но на бумаге всё очень красиво.

Буду признателен, если в дальнейшем поделитесь фидбеком :)

Здорово получилось, действительно что-то новое, шустрое и почти юзабельное. По старой привычке переписал примеры для себя на mobx — намного меньше кода получилось и он полностью лишен бойлерплейта, кроме вызова makeAutoObservable в конструкторе, так что все-таки в проекты не потащу — там скорость восприятия кода и явность взаимосвязей намного важнее сэкономленных килобайтов, но для пет-проджекта для развития нового восприятия работы с данными — вполне можно.


Об одном моменте задумался — генераторы же не полифиллятся, но судя по caniuse поддерживаются 95.41% клиентов, значит вполне уже можно в прод, если не для госконтор и азиатского рынка. В общем — годно.

Спасибо! А что не так с госконторами и азиатским рынком? По первым подозреваю необходимость поддержки старых браузеров. На азиатском рынке та же беда?

Да, там тоже многие еще сидят на старых компьютерах ввиду низкой покупательской способности или устаревшего отношения руководства компаний к интернету. Статистика сейчас разнится, но в районе 4% у IE9-11 все еще есть, а это ну почти 100млн машин если только ЮВА считать. Так что веб там очень специфичен и многие до сих пор придерживаются табличной верстки либо в качестве энтерпрайз решения — флоатов, что не требует полифиллинга. Благо очень многое полифиллится, но не все. У госконтор та же история, но с началом Медведевской "диджитализации" все-таки ситуация немного лучше, и хром-то даже на старую винду админы поставят.

Занимательная статистика) я, конечно обращал внимание на «визуальную отсталость» азиатских сайтов, но списывал это на особенности «вкуса» которые нам не понять.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории