Интересная задумка! Вообще CSS сделан чтобы с помошью селекторов и "немножно" стилей, застилизовать большое количество HTML. CSS обычно статичен, HTML обычно генерируется. Как вы предлагаете сгенерить например динамический список каточек с данными из одного описания CSS? ПС: сам разрабытываю альтернативу React :)
Очень интересный подход! Возьму себе на вооружение. Это это выглядит более удобно, кратко и семантически корректно и с нативной производительностью. Мне тоже уже порядком надоели всевозможные штучки типа (BEM,SASS,TAILWIND,CssInJs), которые привносят дополнительную когнитивную нагрузку и бьют по производительности. Когда нативный HTML/CSS уже научился делать все вещи для которых они создавались изначально. Пользуюсь только CssModules. ПС: Также разрабатываю сейчас замену переусложенному React/Solid https://github.com/fusorjs/dom
Вы не забудьте что пользовательская функция внутри useCallback будет создаваться новая на каждый рендер вне зависимости от того что находится в массиве зависимостей. Например: useCallback((() => {console.log('Created new function'); return () => {};})(), []). Этот хук нужен лишь для того чтобы хранить указатель на функцию. Именно поэтому я в процессе экспериментов переосмыслил Реакт без использования хуков и с гибким рендером, что вылилось в небольшую библиотечку https://github.com/fusorjs/dom
Хейт по отношению к программистам идет из двух источников. Один как вы описали из элитарности, непонятности и уровню оплаты. Но второй источник хейта, возможно неосознаный, идет из подкорки, источник гораздо более сильный. Видите ли, программисты это те кто и являются причиной сокращения профессий. Не пиши код программисты, целые индустрии бы сохранились. Я будучи программистом, иногда ловлю себя на мысли: "останивитесь, что-же вы делаете, вы же рубите сук на котором сидите", адресованной программистам ИИ. "Он же нас заменит, а потом и вас"... Но прогресс не остановить, и это наверное хорошо. Чем больше видов деятельности человеческой устаревает, тем еще больше появляется.
на первом месте идет язык разметки - html, а javascript так и остался на подхвате
Это просто так кажется из-за
frontend framework предлагает свой, так называемый, декларативный язык
Это да, так во Vue, Angular, Svelte... Вам нужно попробовать React, там такого нет, мне тоже не нравятся все эти DSL и лишняя ментальная нагрузка с этим связанная
мы потеряем все то многообразие вариантов красочного и анимированного оформления
Совсем не обязательно его терять, CSS может жить своей своей жизнью в отдельном файле
ui-organizer не предназначен для создания компонентов
Похоже на JSX, только в виде объекта.
когда данные на странице, связаны с данными компонента
Хотел предложить другой подход, когда данные на странице <div>{() => count}</div> связаны с данными JavaScript let count = 0
Или же, если вы хотите чистый JavaScript, то так div(() => count), назвал функциональной нотацией
Вообще понять о библиотеке лучше всего можно как раз по таким простым примерам. И они все покрыты в документации. Если вам не хватает какого-то конкретного кейса, то милости прошу, приведите пример.
А то что вы хотите увидеть тяжелое приложение с кучей зависимостей, это ничем вам не поможет, только субъективно оценить производительность. Поэтому у меня в планах сделать сравнительный бенчмарк, для объективной оценки производительности.
Я один человек с основной работои и семьей. То что вы описали под силу множеству людей. Поэтому-то я и пытаюсь продвинуть этот проект в массы. Так что если поможете, я буду очень вам благодарен.
Кстати да, пришло осознание что реакту (компонентам/хукам) нужен контекст. Вне его они работать не будут. Фьюзору контекст не нужен. Ему нужен только ДОМ. Поэтому его функции/компоненты очень гибкие, их можно использовать в любом контексте.
Любой шаблонизатор как во Vue, Angular, Svelte - это лишняя когнитивная нагрузка. У нас уже есть язык программирования Javascript. В нем уже есть if, else, while...
Интересная задумка!
Вообще CSS сделан чтобы с помошью селекторов и "немножно" стилей, застилизовать большое количество HTML. CSS обычно статичен, HTML обычно генерируется.
Как вы предлагаете сгенерить например динамический список каточек с данными из одного описания CSS?
ПС: сам разрабытываю альтернативу React :)
Плюсанул, но не понял зачем с Модулями еще и БЭМ использовать?
Очень интересный подход! Возьму себе на вооружение. Это это выглядит более удобно, кратко и семантически корректно и с нативной производительностью.
Мне тоже уже порядком надоели всевозможные штучки типа (BEM,SASS,TAILWIND,CssInJs), которые привносят дополнительную когнитивную нагрузку и бьют по производительности. Когда нативный HTML/CSS уже научился делать все вещи для которых они создавались изначально. Пользуюсь только CssModules.
ПС: Также разрабатываю сейчас замену переусложенному React/Solid https://github.com/fusorjs/dom
Лучше бы установку как приложения (PWA) завезли...
Вы не забудьте что пользовательская функция внутри
useCallback
будет создаваться новая на каждый рендер вне зависимости от того что находится в массиве зависимостей. Например:useCallback((() => {console.log('Created new function'); return () => {};})(), [])
. Этот хук нужен лишь для того чтобы хранить указатель на функцию. Именно поэтому я в процессе экспериментов переосмыслил Реакт без использования хуков и с гибким рендером, что вылилось в небольшую библиотечку https://github.com/fusorjs/domХейт по отношению к программистам идет из двух источников. Один как вы описали из элитарности, непонятности и уровню оплаты. Но второй источник хейта, возможно неосознаный, идет из подкорки, источник гораздо более сильный. Видите ли, программисты это те кто и являются причиной сокращения профессий. Не пиши код программисты, целые индустрии бы сохранились.
Я будучи программистом, иногда ловлю себя на мысли: "останивитесь, что-же вы делаете, вы же рубите сук на котором сидите", адресованной программистам ИИ. "Он же нас заменит, а потом и вас"...
Но прогресс не остановить, и это наверное хорошо. Чем больше видов деятельности человеческой устаревает, тем еще больше появляется.
Это просто так кажется из-за
Это да, так во Vue, Angular, Svelte... Вам нужно попробовать React, там такого нет, мне тоже не нравятся все эти DSL и лишняя ментальная нагрузка с этим связанная
Совсем не обязательно его терять, CSS может жить своей своей жизнью в отдельном файле
Похоже на JSX, только в виде объекта.
Хотел предложить другой подход, когда данные на странице
<div>{() => count}</div>
связаны с данными JavaScriptlet count = 0
Или же, если вы хотите чистый JavaScript, то так
div(() => count)
, назвал функциональной нотациейОба подхода будут работать в https://github.com/fusorjs/dom
Спасибо за вашу разработку, пишите еще!
Вообще понять о библиотеке лучше всего можно как раз по таким простым примерам. И они все покрыты в документации. Если вам не хватает какого-то конкретного кейса, то милости прошу, приведите пример.
А то что вы хотите увидеть тяжелое приложение с кучей зависимостей, это ничем вам не поможет, только субъективно оценить производительность. Поэтому у меня в планах сделать сравнительный бенчмарк, для объективной оценки производительности.
Во Fuser стейт это просто переменная Javascript
let x = 0
, во Vue это срытый и более сложный механизм на подобие хуков.В Реакте вы тоже делаете ререндер вручную, вызовом
setState(x)
. Видите насколько это не явно?Во Fuser, во первых все явно
state = x; update();
, а во вторых более просто в имплементации.В реакте тоже самое
Кстати, в репе на гитхаб есть еще несколько ссылок на примеры побольше, и на два полноценных приложения. И документации уже накопилось порядочно.
Да, это уже в планах
Все когда-то начиналось с маленького...
Я один человек с основной работои и семьей. То что вы описали под силу множеству людей. Поэтому-то я и пытаюсь продвинуть этот проект в массы. Так что если поможете, я буду очень вам благодарен.
Примерно так. Фьюзор обновит только динамические области, и только если значение поменялось. Чтобы не нагружать зря DOM.
state = x
это просто яваскрипт присваевает значение переменной, и никакой скрытой магииКаждый стейт обычно относится к своему элементу, поэтому лучше и обновлять их по отдельности.
Но можно сделать и так: https://codesandbox.io/s/fusor-analog-clock-jsx-hqs5x9?file=/src/index.tsx
А можно не заморачиваться и инициировать проверку обновления всего приложения с корня, сделав throttling (как примерно у Реакт).
Вся прелесть в том, что теперь есть контроль над процессом обновления.
Потому как Реак самый логичный и простой из всего что было, до появления Фьюзора лол...
Обновил его доки, добавил JSX
Кстати да, пришло осознание что реакту (компонентам/хукам) нужен контекст. Вне его они работать не будут. Фьюзору контекст не нужен. Ему нужен только ДОМ. Поэтому его функции/компоненты очень гибкие, их можно использовать в любом контексте.
Добавил поддержку JSX. Улучшил документацию.
Любой шаблонизатор как во Vue, Angular, Svelte - это лишняя когнитивная нагрузка. У нас уже есть язык программирования Javascript. В нем уже есть
if, else, while...
Добавил поддержку JSX, все как вы просили. Хотя функциональная нотация более гибкая, обновил доки, почитайте.