Разработка кросс-платформенного рабочего стола с графическим интерфейсом HTML5

Рассказ: есть ли способ написать настольное приложение с графическим интерфейсом в HTML5 и ядро в кросс-платформенном языке, таком как python (или даже С#/Mono)?

Более длинная история: я разработчик С#, для небольших личных проектов, которые я редко делаю, работающих под Windows и OSX, я использую С# (Mono) с интерфейсом, использующим Eto.Forms

Я хотел бы понять, есть ли зрелый способ достичь тех же результатов с помощью графического интерфейса HTML5, так как я хотел бы узнать это и полагаю, что это может быть хорошим вариантом для ближайших пользовательских интерфейсов рабочего стола Windows (или, в противном случае, хорошего инструмента иметь в своем наборе навыков). Конечно, если код, исполняемый за кулисами, - это С#, я буду более чем счастлив, но также получаю, что мои ноги мокрые в другом, возможно, более кросс-платформенный, такой как python, будет хорошо.

На этом этапе меня не интересует мобильное решение.

Ответы

Ответ 1

Electron (ранее оболочка Atom) действительно созрел в последнее время. На самом деле это то, на чем построен VSCode.

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-приложения и наоборот. В принципе, вы:

  1. Создание рабочего стола WPF
  2. Включите CEFSharp и поместите полноэкранный браузер в окно
  3. Методы вызова в JavaScript:
// .NET
var mainFrame = browser.GetMainFrame();
mainFrame.ExecuteJavaScriptAsync("any js code");
  1. Связывание.NET-объекта
// .NET
browser.RegisterJsObject("boundObject", this);
  1. Вызов методов на связанном.NET-объекте с веб-сайта /JS:
// JS 
boundObject.someMethod();

На этой основе вы можете создать медиа-уровень (ViewModels, контроллеры,...) между HTML/JS-UI и.NET-логикой...