All streams
Search
Write a publication
Pull to refresh
12
0.1
Send message

Когда вы задаете новое значение в своем стейте, будь он в MobX или же в setState. Вы вызовом этой функции тригеррите обновление. То-есть вызываете обновление вручную.

Согласен что вэб компоненты это очень важное и нужное подспорье для нас, как вэб разработчиков. И фреймворки и компоненты имеют пересекающийся функционал. Но то что они прекрасно могут работать вместе это факт. Например фреймворк отвечает за создание и обновление DOM внутри компонента, а компоненты отвечают за общую структуру документа и композицию.

React кстати был не совсем совместим с вэб компонентами, также в нем дублируется логика жизненного цикла, и еще он тяжеловесен.

Некоторое время назад я начал разработку легковесной библиотеки для создания и обновления DOM. Фундаментально она схожа с React, но без этих недостатков. Так что предполагаю что она могла бы быть идеальным помошником для написания вэб компонентов https://github.com/fusorjs/dom

Во-первых, HTML это удобная текстовая репрезентация объектной модели документа. Во-вторых, я считаю что react-native и подобные ему гибридные подходы скоро уйдут. Так как они по сути являются попыткой пере-изобретения велосипеда истинно кроссплатформенной среды вэб броузера. Поводом их создания было недостаточное количество поддерживаемых фич и скорости работы броузера. С тех времен много воды утекло и теперь 90% нативных приложений может быть реализовано как PWA https://whatpwacando.today/

Создавайте PWA приложение в следующий раз. Оно может 99% того же что и нативное. Устанавливаетя без стора и выглядит как нативное.

Можно на локалхосте сервер развернуть, у вас все-равно датчик где-то должен жить.

И плюсом получаете мультиплатформенность (андроид, виндовс, линукс, макось).

В Реакте вы также вручную обновляете компонент, JSX или "функциональная нотация" мало чем отличаются.

По моему, так гораздо проще и производительнее ;)

function CounterButton() {
  let count = 0;
  const handleClick = () => {
    count++;
    btn.update();
  };
  const btn = button(
    { click$e: handleClick }, // props
    () => `You clicked ${count} times`, // child
  );
  return btn;
}

Мы всегда могли писать Javascript в HTML. В JSX же можно с помощью Javascript создавать и модифицировать DOM динамически. Чтобы не было месива, надо бизнес логику выносить из верстки.

В MobX надо оборачивать данные классом и делать его oservable. Это даже многословнее хуков.

Да, разумеется они имплементированы по разному. Я исходил из контекста этой статьи, что Хуки/Сигналы схожи в том, что это обертки для простейших операций, которые могут быть заменены на установку переменной let x = 0 и вызов функции () => x, как сделано в Fuser. А также они схожи в "хитрой" логике имплементации, которая будет влиять на производительность. Также схожи в том что смешивают два действия: установку стейта и обновление.

В SolidJS используются теже хуки, только теперь они называются Signal. Также соединена логика изменения стейта и обновления что не гуд (смотри single-responsibility principle). Fusor должен по производительности не уступать Svelte. И там где Svelte делает компиляцию не известно как, в Fuser это видно в коде. Потому как там Javascript переменные и функции.

Бегло пробежал по Stenciljs. Много страниц документации, много правил, декораторы, механизмы свойств и состояния. Во Fusor это просто Javascript переменные и функции, всё! Отсюда и одна страница с документацией. Вэб-компонет используется для жизненного цикла, дальше ваше дело, если хотите их использовать.

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

12 ...
23

Information

Rating
2,997-th
Registered
Activity

Specialization

Fullstack Developer, Web Developer
Senior
JavaScript
HTML
CSS
React
TypeScript
Node.js
SQL
Linux
NoSQL
English