Как разрабатывать настольные приложения с использованием HTML/CSS/JavaScript?

Во-первых, мне не интересно заниматься этим профессионально. Я веб-разработчик, мой коллега недавно ушел в Spotify и сказал, что он будет работать в основном на JavaScript для приложения Spotify Desktop. Он сказал, что он использует "Chrome frame", и все внутри сделано как веб-приложение (HTML/JS/CSS).

Для веб-разработчика, который никогда не создавал ничего для Desktop, это отличная новость. Если я смогу использовать технологии, которые я уже знаю, и внедрить их в своего рода "фрейм", я все равно смогу создать Windows или, что еще лучше, кроссплатформенное приложение.

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

Так как же это сделать? Что именно мне нужно / нужно знать?

9 ответов

Решение

Вы можете начать с Titanium для настольных разработчиков. Также вы можете взглянуть на Chromium Embedded Framework. Это в основном элемент управления веб-браузера на основе хрома.

Он написан на C++, так что вы можете делать все необходимое для низкоуровневой ОС (Growl, иконки в трее, локальный доступ к файлам, com-порты и т. Д.) В вашем приложении-контейнере, а затем всю логику и графический интерфейс приложения в html/javascript. Это позволяет вам перехватывать любой http-запрос либо для обслуживания локальных ресурсов, либо для выполнения некоторых пользовательских действий. Например, контейнер может перехватить запрос к http://localapp.com/SetTrayIconState?state=active а затем вызвать функцию C++ для обновления иконки в трее.

Это также позволяет создавать функции, которые можно вызывать непосредственно из JavaScript.

Отладить JavaScript прямо в CEF очень сложно. Там нет поддержки для ничего, как Firebug.

Вы также можете попробовать AppJS.com (Помогает создавать настольные приложения. Для Linux, Windows и Mac с использованием HTML, CSS и JavaScript)

Также, как отмечает @Clint, команда http://brackets.io/ (Adobe) создала потрясающую оболочку с использованием Chromium Embedded Framework, которая значительно упрощает начало работы. Он называется оболочкой скобок: http://github.com/adobe/brackets-shell Подробнее об этом можно узнать здесь: http://clintberry.com/2013/html5-desktop-apps-with-brackets-shell

NW.js

(Ранее известный как node-webkit)

Я бы предложил NW.js, если вы знакомы с Node или имеете опыт работы с JavaScript.

NW.js - это среда выполнения приложений, основанная на Chromium и node.js.

Характеристики

  • Приложения написаны на современных HTML5, CSS3, JS и WebGL
  • Полная поддержка API Node.js и всех сторонних модулей.
  • Хорошая производительность: Node и WebKit работают в одном потоке: вызовы функций выполняются просто; объекты находятся в одной куче и могут просто ссылаться друг на друга
  • Легко упаковывать и распространять приложения
  • Доступно в Linux, Mac OS X и Windows

Вы можете найти репозиторий NW.js здесь и хорошее введение в NW.js здесь. Если вам нравится изучать Node.js, я бы порекомендовал этот пост с большим количеством хороших ссылок.

Awesomium позволяет легко использовать HTML-интерфейс в вашем приложении C++ или.NET

Обновить

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

ПРИМЕЧАНИЕ: AppJS устарела и больше не рекомендуется.

Взгляните на NW.js вместо этого.

Похоже, что решения для настольных приложений на базе HTML/JS/CSS не являются короткими.

Одно решение, с которым я только что столкнулся, - это TideSDK: http://www.tidesdk.org/, который выглядит очень многообещающе, если посмотреть на документацию.

Вы можете разрабатывать с Python, PHP или Ruby, и упаковать его для Mac, Windows или Linux.

Извините, что лопнул, но настольный клиент Spotify - это всего лишь браузер на основе Webkit. Конечно, он предоставляет определенные дополнительные функциональные возможности, но он способен только запускать JS и рендерить HTML/CSS, потому что у него есть JS-движок, а также механизм рендеринга Chromium. Это не поможет вам с написанием клиентского веб-приложения и развертыванием на нескольких платформах.

То, что вы ищете, похоже на Sencha Touch - фреймворк, позволяющий развертывать приложения HTML5 на устройствах iOS, Android и Blackberry. По сути, он выступает в качестве посредника между определенными вызовами API и доступными функциональными возможностями конкретного устройства.

У меня нет опыта работы с http://www.appcelerator.com/, но, похоже, именно это и делается, и я получаю очень положительные отзывы в Интернете. Вы должны попробовать его (если вы не хотите вернуться в 1999 год и перейти на MS HTA;)

Вы можете создавать приложения Javascript с помощью Adobe AIR… http://www.adobe.com/products/air.html

Я знаю, что есть Fluid и Prism (есть и другие, которыми я раньше пользовался), которые позволяют загружать веб-сайт в то, что выглядит как отдельное приложение.

В Chrome вы можете создавать ярлыки на рабочем столе для веб-сайтов. (вы делаете это из Chrome, вы не можете / не должны упаковать это с вашим приложением) Chrome Frame отличается:

Google Chrome Frame - это плагин, разработанный для Internet Explorer на основе проекта Chromium с открытым исходным кодом; это приносит открытые веб-технологии Google Chrome в Internet Explorer.

Для вашего веб-приложения вам понадобится подобная оболочка, а остальное - это веб-технологии, к которым вы привыкли. Вы можете использовать локальное хранилище HTML5 для хранения данных, пока приложение находится в автономном режиме. Я думаю, вы даже сможете работать с SQLite.

Я не знаю, как вы поступите с доступом к конкретным функциям ОС, однако. То, что я описал выше, имеет те же ограничения, что и любой "обычный" сайт. Надеюсь, это даст вам какое-то руководство о том, с чего начать.

CEF предлагает большую гибкость и возможности для настройки. Но если целью является быстрая разработка node-webkit, это тоже хороший вариант. Node-web kit также предлагает возможность вызова узловых модулей напрямую из DOM.

Если нет никаких встроенных модулей для интеграции, Node-Webkit может предложить лучший пробег. С родными модулями C/C++ или даже C# лучше с CEF.

Другие вопросы по тегам