Разработка кросс-платформенного рабочего стола с графическим интерфейсом HTML5
Рассказ: есть ли способ написать настольное приложение с графическим интерфейсом в HTML5 и ядро в кросс-платформенном языке, таком как python (или даже С#/Mono)?
Более длинная история: я разработчик С#, для небольших личных проектов, которые я редко делаю, работающих под Windows и OSX, я использую С# (Mono) с интерфейсом, использующим Eto.Forms
Я хотел бы понять, есть ли зрелый способ достичь тех же результатов с помощью графического интерфейса HTML5, так как я хотел бы узнать это и полагаю, что это может быть хорошим вариантом для ближайших пользовательских интерфейсов рабочего стола Windows (или, в противном случае, хорошего инструмента иметь в своем наборе навыков). Конечно, если код, исполняемый за кулисами, - это С#, я буду более чем счастлив, но также получаю, что мои ноги мокрые в другом, возможно, более кросс-платформенный, такой как python, будет хорошо.
На этом этапе меня не интересует мобильное решение.
Ответы
Ответ 1
Electron (ранее оболочка Atom) действительно созрел в последнее время. На самом деле это то, на чем построен VSCode.
Там есть большой учебник и стартовый код для использования Angular 2 и Typcript, и вы даже можете использовать VSCode для написания и сборки.
Для меня это лучший способ перехода от мира WPF к HTML5.
Ответ 2
NW.js выглядят довольно многообещающе... вы могли бы даже использовать TypeScript, который был бы намного ближе к С#, чем простой ol js. Если вы открыты для использования PHP, вы можете проверить проект nightrain https://github.com/naetech/nightrain.
Ответ 3
Дайте http://www.tidesdk.org/ попытку.
Ваше приложение будет работать в Windows 8, MacOS и Linux. Вы можете использовать HTML5, Javascript и CSS3.
Но вы также можете расширить функциональность своего приложения с помощью языка сценариев, который вам удобнее. TideSDK в настоящее время поддерживает Python, PHP и Ruby.
Ответ 4
Я написал APP с http://kivy.org/, он способен создавать приложения для разных систем.
Qt-узел https://github.com/arturadib/node-qt кажется интересным, но я сам его не тестировал.
И последний https://chrome.google.com/webstore/launcher
Вы можете создавать веб-приложения для chrome, которые должны запускаться в поддерживаемых системах.
Kivy - это решение Python. Возможно, что Qt-узел - это то, что вы ищете.
Вот несколько хороших уроков для kivy: https://www.youtube.com/playlist?list=PLQVvvaa0QuDe_l6XiJ40yGTEqIKugAdTy
Ответ 5
NW.js
Но это Javascript (узел), а не питон или С#.
Ответ 6
Очень интересный проект, я думаю, это Chromium Embedded Framework. Вы в основном вставляете (удаленный) веб-браузер в своем приложении. Для python поддерживается множество GUI Toolkits. Проверьте это для получения дополнительной информации.
Поскольку вы привыкли к С#, возможно, Java с JavaFX и FXML является опцией. FXML - это не HTML, но вы можете также стилизовать его с помощью CSS. Вы также можете использовать Scene Builder для более быстрого создания пользовательского интерфейса. Многие языки JVM поддерживают этот инструментарий, поэтому Jython вместо Java также будет работать. Однако я порекомендую Java, потому что поддержка других языков пока еще не идеальна.
Использование С# и Windows App Store WebView также является опцией. Вы можете проверить MSDN для получения дополнительной информации.
Я уверен, что есть и другие варианты (Kivy, Node.js и т.д.). Некоторые из них уже упоминаются в этой теме.
Ответ 7
Я бы порекомендовал Node-Webkit, который основан на nodejs.You все еще можете использовать некоторые скрипты python, чтобы выполнить некоторую работу с базой данных, интегрированную с Node-Webkit, с которой легко справиться. Я уже видел некоторые успешные приложения, использующие это (например, wunderlist).TideSDK - еще один выбор, но поддержка python в TideSDK недостаточно зрела. Проект Node-Webkit размещен на https://github.com/nwjs/nw.js/
Ответ 8
Недавно я работал с Chromium Embedded Framework, в основном браузером для WPF WinForms. Он работает очень хорошо и обеспечивает двухстороннюю совместимость с веб-сайта до.NET-приложения и наоборот. В принципе, вы:
- Создание рабочего стола WPF
- Включите CEFSharp и поместите полноэкранный браузер в окно
- Методы вызова в JavaScript:
// .NET
var mainFrame = browser.GetMainFrame();
mainFrame.ExecuteJavaScriptAsync("any js code");
- Связывание.NET-объекта
// .NET
browser.RegisterJsObject("boundObject", this);
- Вызов методов на связанном.NET-объекте с веб-сайта /JS:
// JS
boundObject.someMethod();
На этой основе вы можете создать медиа-уровень (ViewModels, контроллеры,...) между HTML/JS-UI и.NET-логикой...