LINUX.ORG.RU

А почему у Gtk еще нету официальной React-подобной библиотеки поверх?

 , ,


0

2

Вот смотрю на то как в Rust делают приложения на Gtk, и очень удивляюсь, неужели кому то нравится писать вручную все эти интерфейсы в императивном стиле? А ведь пишут, еще обходя все проблемы, которые исходят из того что у Gtk свой подход к управлению памятью который на Rust не налазит, как и наследование компонентов, из за чего в Rust пришлось добавлять «классы» через макросы - https://gtk-rs.org/gtk4-rs/stable/latest/book/g_object_subclassing.html

Есть ли какая то проблема в создании libgtk-react, где можно будет описывать интерфейс декларативно, с использованием javascript, с удобным получением данных из C++ или Python части?

Вроде есть какие то библиотеки, но они нигде не используются как я понял.

★★★★★
Ответ на: комментарий от DrBrown

Я еще из книжки по 4й версии помню фразу, что, мол, нафиг эти генераторы кнопок, получится фигня, пишите сразу в коде все. Я так и делал в итоге…

Zhbert ★★★★★
()
Ответ на: комментарий от Smetchik

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

MOPKOBKA ★★★★★
() автор топика
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от MKuznetsov

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

Посмотри на реализацию каталога с фильтрами на Vue и в jQuery, сразу увидешь разницу, строк меньше, код понятнее. Если брать десктоп то это может быть редактор настроек, или вывод файлов в архиваторе, намного удобнее когда интерфейс является отражением данных, а не особая сущность со своим стейтом и объектами, не дай бог если к объектам прикрепляют сущности логики программы. На таких примерах сразу видно полное преимущество.

Ты еще просишь примеры привести, то есть я должен придумать как должна выглядеть такая библиотека, или взять прочесть код на Gtk который не особо зависит от контекста и многих внешних данных, переписать его на React, мне делать нечего?

MOPKOBKA ★★★★★
() автор топика
Последнее исправление: MOPKOBKA (всего исправлений: 3)
Ответ на: комментарий от MOPKOBKA

Ты еще просишь примеры привести, то есть я должен придумать как должна выглядеть такая библиотека, или взять прочесть код на Gtk который не особо зависит от контекста и многих внешних данных, переписать его на React, мне делать нечего?

вот и всем точно так-же…никто не хочет делать эпичное НЕНУЖНО

вы сами и ответили себе на исходный вопрос: «А почему у Gtk еще нету официальной React-подобной библиотеки поверх?»

ДЕЛАТЬ ЧТО-ЛИ НЕЧЕГО ?

MKuznetsov ★★★★★
()
Ответ на: комментарий от DrBrown

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

Что же так повлияло на твои интеллектуальные и познавательные способности? Возможно возраст? Все же на ЛОРе много людей 30+, а с возрастом к сожалению люди заметно тупеют, а иногда и вовсе призывают вернуться к тому как жили они. Но наверное с этим нужно как то бороться, есть много людей которые трезво мыслят несмотря на возраст, иногда очень большой.

MOPKOBKA ★★★★★
() автор топика
Последнее исправление: MOPKOBKA (всего исправлений: 3)
Ответ на: комментарий от MKuznetsov

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

Одно дело если бы ты знал что такое React, Vue, имел представление о разработке современных интерфейсов учитывая современные потребности, и критиковал бы по умному, но ты просто пишешь ненужно, потому что не способен понять о чем вообще речь.

MOPKOBKA ★★★★★
() автор топика
Ответ на: комментарий от MKuznetsov

Я тебе уже привел, можешь загуглить и узнать сам? Вот тебе еще пример: https://medium.com/@Nick_C_Rose/react-vs-vanilla-javascript-f5af0a9305a2

Рассуждение React vs Js+Html, но все это применимо и к ReactGtk vs Gtk, там декларативность, а там императивность.

Еще подробнее? 3 000 рублей в час на карту и через телеграмм я тебе могу с объяснениями продемонстрировать различные примеры.

MOPKOBKA ★★★★★
() автор топика
Ответ на: комментарий от DrBrown

1. Я не утверждал что ты чат-бот буквально
2. Я не говорил что все умственные способности фатально затронуты, скорее сильно пошатнулись, где то больше, где то меньше
3. Упор бы на обучение новому, разбор ошибок к этому не относится явно, поэтому был шанс что ты сможешь мне о чем то рассказать

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

MOPKOBKA ★★★★★
() автор топика
Ответ на: комментарий от MOPKOBKA

Посмотри на реализацию каталога с фильтрами на Vue и в jQuery, сразу увидешь разницу, строк меньше, код понятнее.

Не стесняйтесь, сразу ссылкой на сравнение пруфайте. А то сомневающихся, как видите, полно. Надо им показать!

3 000 рублей в час на карту и через телеграмм я тебе могу с объяснениями продемонстрировать различные примеры.

Нет, так делать нельзя, это портит репутацию Реакта, ещё подумают что те кто продвигают Реакт, продвигают его ради того чтобы заработать на Реакте ради Реакта. Это не внушает доверия.

По вашей ссылке на медиум, кстати, я чётко вижу 8 строчек кода на Ванилле и 8 строчек кода на Реакте, причём на Реакте это выглядит мудреней с какими-то массивами и прочим функциональным мусором, внимание вопрос, если строчек одинаковое количество, то в чём выгода? Учитывая, что Реакт ещё и либу многобайтную с собой тащит, тогда как ванилла – нет.

mydibyje ★★★★
()
Последнее исправление: mydibyje (всего исправлений: 1)
Ответ на: комментарий от mydibyje

По вашей ссылке на медиум, кстати, я чётко вижу 8 строчек кода на Ванилле и 8 строчек кода на Реакте

Нет, там намного больше строк, так как ты не видишь получение button, html, не видишь как это обрамляется для того что бы на страницу можно было поместить несколько списков, а React этого не требует. Но там не на строки нужно смотреть, у React их конечно меньше, там нужно смотреть на подход. Как ты будешь получать данные со своего списка? Придется работать с DOM элементами, что то в них хранить, получать? Давай просто добавим фильтр, если ничего не введено в поле, то все результаты, если что то введено то отсеять те элементы, которые не включают в себя подстроку.

const [items, setItems] = useState(["Milk", "Bread", "Eggs"])
const [itemInput, setInput] = useState("")
const [filterInput, setFilterInput] = useState("")
function Items() {
  return filterInput.length ? items.filter(item => item.includes(filterInput)) : items;
}
return (<section>
  <ul>{ Items().map(item => (
    <li key={item}>{item}</li>
  ))  }</ul>
  <button onClick={() => setItems([...items, itemInput])}>Add element</button>
  <input value={itemInput} onChange={e => setInput(e.target.value)}/>
  Filter: <input value={filterInput} onChange={e => setFilterInput(e.target.value)}/>
</section>);

причём на Реакте это выглядит мудреней с какими-то массивами и прочим функциональным мусором

Понял, ты не знаешь что такое функциональное программирование, и что такое программирование вообще.

Учитывая, что Реакт ещё и либу многобайтную с собой тащит, тогда как ванилла – нет.

Очередное подтверждение что ты вообще ничего не знаешь, может гигабайтную?

MOPKOBKA ★★★★★
() автор топика
Последнее исправление: MOPKOBKA (всего исправлений: 2)
Ответ на: комментарий от MOPKOBKA

Конечно дураки. Хипстеры из гугла даже их умнее. Реакт - самое наркоманское поделие, у каждого автора реакта мамка в половых отношениях с собакой состоит. А ангуляр ничего

DumLemming ★★★
()

А почему у Gtk еще нету официальной React-подобной библиотеки поверх?

Там скоро и самого тулкита не будет, куда там React. Ты объем запланированного выпила фич в gtk5 видел?

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

wandrien ★★
()
Ответ на: комментарий от bread

Можно взять за основу Vue, он читается приятнее.

<section>
  <ul>
    <li v-for="item in items" :key="item" :html="item"/>
  </ul>
</section>
Синтаксис дело десятое, неужели портянка на 50 строк на Gtk лучше?

MOPKOBKA ★★★★★
() автор топика
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от wandrien

Ну вот у меня есть std::vector<std::string> items = {«Bread», «Milk», «Eags»}; как мне написать этот XML для списка как выше? Что бы при обновлении items список автоматически обновлялся?

Дело не в XML, он мало чем отличается от ручного кодирования, иногда даже хуже.

MOPKOBKA ★★★★★
() автор топика
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от MOPKOBKA

Ну вот у меня есть std::vector<std::string> items = {«Bread», «Milk», «Eags»}; как мне написать этот XML для списка как выше? Что бы при обновлении items список автоматически обновлялся?

Простой ответ: никак. Просто потому что у вектора нет сигналов об обновлении. Поэтому обновил данные – уведоми об этом контроллер. Сам, ручками.

DrBrown
()
Последнее исправление: DrBrown (всего исправлений: 1)
Ответ на: комментарий от wandrien

Не важно какой тип, главное возможность, а условия там есть в XML? Компоненты? Не нужно смотреть на то что есть разметка, ее может и не быть вовсе.

MOPKOBKA ★★★★★
() автор топика
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от MOPKOBKA

Я не понимаю вопрос.

Ты можешь создать дерево виджетов из XML-описания, потом получить указатель на компонент по его имени и программно делать с ним что захочешь.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от DrBrown

Да. Вот хотел написать, что нужны соответствующие виртуальные методы класса, которых тут нет. Но было лень печатать)

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

Вопрос был риторический, ну ладно.

Я не понимаю вопрос.

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

Возьмем код выше:

<section>
  <ul>
    <li v-for="item in items" :key="item" :html="item"/>
  </ul>
</section>

Если const items = ['A', 'B', 'C'] то:

<section>
  <ul>
    <li>A</li>
    <li>B</li>
    <li>C</li>
  </ul>
</section>
Вот еще, так можно на Glade XML? (нет, я знаю)
<section>
  <ul>
    <li v-for="item in items.slice(0, 6)" :key="item" :html="item"/>
    <li v-if="items.length > 6">И еще не показано {items.length - 6} элементов...</li>
  </ul>
</section>

MOPKOBKA ★★★★★
() автор топика
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от MOPKOBKA

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

ВНЕЗАПНО любой компилируемый императивный ЯП заставляет работать с данными через указатели.

обновлять данные если что то прилетело в вектор

В какой вектор? Какие данные? Зачем ты в std:vector данные пишешь, дуралей? Пиши сразу в модель, и тулкит всё обновит сам. Ну маны там почитай, я не знаю. Они у gtk подробные.

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

У тебя тут срань полная вместо «декларативности», а за такую «реактивность» нужно отлучать от компа. Ты изобретаешь какой-то список элементов из говна и палок, попутно мешая в кучу логику и представление. Список, который в gtk у тебя будет просто из коробки без костылей. Суёшь в него данные и ВСЁ.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 3)