@Interface

Есть ли у вас на примете GUI библиотеки для desktop приложений на JavaScript?

Уже не первый год мне не хватает инструмента для разработки нативных интерфейсов (GUI) кроссплатформенных desktop-ных приложений на JavaScript.

Для тех кто наткнется на этот вопрос в поисках такого инструмента, приведу список, того что примерно похоже на то, что я ищу, но полностью удовлетворяет требованиям:

Первая категория - это webkit-based решения для desktop приложений:

(Возможно что-то пропустил - пишите - добавлю)

WebKit-решения - это с одной стороны интересная задумка и есть несколько хороших примеров как это применили, но они все представляют из себя в какой-то степени браузер. А это не "нативный" UI. А именно: оверхед по производительности и по занимаемому месту (+50 Мб к весу приложения). Это казалось бы не критично, но если все приложение - формочка с 2 кнопками - это явно из пушки по воробьям.

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

Далее (немного не в тему, но все же) можно выделить похожую категорию для мобильной разработки:


А вот дальше уже интересно! Фреймворки с нативным UI для мобильных устройств:


Эти инструменты позволяют использовать нативный UI для мобильных платформ. Это почти то, что мне надо! Только мне нужно то же, но для десктопа :(

У всех трех есть упоминание десктоп-приложений:
Titanium - см. выше - на webkit;
React Native - есть для macOS (https://github.com/ptmt/react-native-macos) и для windows 10+ в UWP формате: https://github.com/ReactWindows/react-native-windows . А мне хотелось бы поддержки win7 хотя бы;
NativeScript - (пока нет поддержки) https://github.com/NativeScript/NativeScript/issues/27

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

Это родившиеся ~5 лет назад проекты, просуществовавшие около года :( Хотелось бы знать почему их более не поддерживают.

Есть также QML - но тут насколько я понимаю одним JS не огрничиться. Поправьте если я не прав!

Еще есть WPF - но он ограничен Windows насколько я понимаю.

Есть ли у вас какие-то инструменты на примете, которые:
- имеют нативный интерфейс (не webview / браузер etc.)
- кроссплатформенны
- opensource
- JavaScript достаточно для создания приложения (не считая языков разметки и подобного)
- позволяют создавать десктопные приложения
?

P.s. сам пытался сделать свое решение на связке Delphi + javascript - т.е. с помощью Delphi "enhanced RTTI" можно прокинуть классы контролов в движок JS (в моем случае SpiderMonkey 24), что позволило рисовать родные ламповые виндовые кнопочки и менюшки. Сделал даже работающий прототип, могу поделиться ссылкой если кому-то интересно. Но в итоге проект имеет ряд ключевых недостатков:
- только windows (а хотелсоь бы иметь кроссплатформенность), но это меньшая из проблем;
- код проекта открыт, но лицензия Delphi недопускает такое использование своей IDE насколько мне известно;
- ограниченность js движка - SpiderMonkey 24 - это es2015, а учитывая, что проект delphi-javascript, на котором все это выстроенно мертв - все очень печально :(

Думал о переходе на Lazarus, но там нет "enhanced RTTI" из Delphi 2010+.

Также рассматривал проект mormot, так как там есть более свежий SpiderMonkey 45, да и сам проект живой: https://synopse.info/forum/viewtopic.php?id=3498

Если вы можете прокоментировать такой подход - мне было бы интерсно вас выслушать. Если вы заинтересованны в том чтобы развить эту идею - протащить классы lazarus-контролов в SpiderMonkey 45 - я буду в восторге! :)

Также была мысль о том чтобы не использовать отдельный js-движок, а сделать полностью динамичное в рантайм приложение в lazarus (т.е. создание кнопок, форм, расположение их, удаление и т.д. в рантайм, что не ясно возможно ли с его RTTI) и подключить его к Node.js через сокет... Но такое решение сейчас кажется как минимум неоднозначным :D
Кстати, нет ли у вас напримете подобных инструментов, чтобы можно было GUI управлять полностью свободно через сокет?
  • Вопрос задан
  • 2132 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 6
  • @gimntut
    По моему на лицо путаница понятий. Если нужно нативное приложение, то рендер для html'а под названием webkit/blink/gecko/trident точно не нужен. Нужен js движок V8/SpiderMonkey/Chakra, а они не такие уж и большие.
    То что в RAD 2010 называется "enhanced RTTI", в windows встроено начиная c XP и называется ActiveX. В своё время активно использовалось в VB. Причём в качестве языка до сих пор можно использовать JS (см. WSH). Только смысла в этом не много, т.к. 99% js библиотек рассчитано на работу с DOM, т.е. с webkit или другими рендерами, а значит придётся всё писать с нуля. А зачем, когда уже есть готовые библиотеки написанные на нативных языках? Поэтому или Electron и вся мощь js, или Delphi и вся мощь VCL.
    Ответ написан
  • basili4
    @basili4
    Программист
    для юнити можно писать на js. Вопрос в том какого рода приложения Вы хотите для desktop'а делать а то может в сторону явочки посмотреть.
    + работает везде подо что есть JVM

    ну а минусы знают все.
    Ответ написан
  • Zifix
    @Zifix
    Qt/QML Developer & UX/UI Designer
    На QML можно сделать почти все, но некоторые вещи сильно проще вынести в С++ и работать с ними через него.
    Ответ написан
  • xmoonlight
    @xmoonlight
    Сложный вопрос - мудрый ответ.
    Я вот сам искал под Lazarus, но пока пришёл к одному: берётся граф. либа BGRABitmap и на ней всё делается вручную.
    Бонус.
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Вакансии с Моего Круга Все вакансии
Заказы с Фрилансим Все заказы