Як розробити настільні програми за допомогою HTML / CSS / JavaScript? [зачинено]


189

По-перше, мені не цікаво займатися цим професійно. Я веб-розробник, недавно виїхав у службу Spotify, і сказав, що він працює в основному в JavaScript для програми Spotify Desktop. Він сказав, що використовується "Chrome frame", і все, що знаходиться всередині, робиться як веб-додаток (HTML / JS / CSS).

Як веб-розробник, який ніколи нічого не створював для Desktop, це чудова новина. Якщо я можу використовувати ті технології, які я вже знаю, і впроваджувати їх всередині якогось "кадру" і все-таки матиму змогу створити вікно чи ще краще кросплатформенний додаток.

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

То як же з цим піти? Що саме я повинен / мушу знати?


Слід зазначити, що існує щонайменше два неексклюзивні рівні веб-додатків. Одніми будуть додатки в стилі додатків на стороні клієнта, а також це додаток, який підтримує стан із базою даних або щось подібне. (Звичайно, найкращі додатки обидва.) Ви можете навчитися робити одне, не дізнаючись багато про інше.
Уелід Хан

Ще одна пов’язана тема тут [Чи можна займатися розробкою робочого столу за допомогою JavaScript?] [1] [1]: stackoverflow.com/questions/109399/… З повагою, Ben
benbai123

Ви робите це неправильно. Web не призначений для настільних програм. Період. Якщо ви хочете, ви можете використовувати QML / QtQuick, що є хорошим компромісом (але він залишається настільним, а не веб!)
Стеф


Відповіді:


74

Ви можете почати з Titanium для настільних розробників. Також ви можете ознайомитись із вбудованою рамкою Chromium . Це в основному керування веб-браузером на основі хрому.

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

Це також дозволяє створювати функції, які можна викликати безпосередньо з JavaScript.

Налагодити JavaScript безпосередньо в CEF дуже важко. Немає підтримки для чогось подібного Firebug.

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

Крім того , як зазначив @Clint, команда brackets.io (Adobe) створили приголомшливу оболонку , використовуючи Chromium Embedded Framework , що робить його набагато легше почати роботу. Вона називається оболонкою дужок: github.com/adobe/brackets-shell Дізнайтеся більше про це тут: clintberry.com/2013/html5-desktop-apps-with-brackets-shell


3
CEF має вбудовані хромовані інструменти для розробників, щоб ви могли використовувати їх для налагодження js. AppJS також має низький рівень доступу до ОС за допомогою API nodejs.
Мортеза Мілані

1
Команда Bracket.io (Adobe) створила дивовижну оболонку за допомогою Chromium Embedded Framework, що значно полегшує початок роботи. Вона називається оболонкою дужок: github.com/adobe/brackets-shell Дізнайтеся більше про це тут: clintberry.com/2013/html5-desktop-apps-with-brackets-shell
Клінт

Наразі я використовую CEF та Eclipse як інструменти розробки, і можливо зв’язати CEF з інструментами для розробників Chrome, передавши --remote-debugging-port = 8080 до конфігурацій запуску програмних аргументів, а потім перейти до localhost: 8080 у Chrome . Тому, будь ласка, видаліть частину - дуже важко налагоджувати JavaScript безпосередньо в CEF. Немає підтримки для чогось подібного Firebug. -
Напряжений малюк

Також я починаю розробляти Kontena コ ン テ ナgithub.com/jhg/kontena для розробки рішення для Win32, Linux, Unix like, Mac та SmartPhone, яке базуватиметься на CEF, PhoneGap, Backet.io від Adobe, AppJS тощо Це настільки нестабільно і є лише прототипом для отримання MVP, записано в Python для тестової концепції, але буде перекладати код на C ++ / C з QT5 (зараз використовую QT4), і коли буде в C ++ / C, запустіть переклад для mobil підтримка.

@JHG хороша робота .. Повідомте нас, коли її офіційно випущено та виправлено помилки
Альфред

33

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, я б рекомендував цю публікацію ТА з великою кількістю хороших посилань.


2
Відряджений. Чудовий інструмент.
Ерік Реппен

Але це не може бути розподілене між людьми, не просячи їх встановити вузол та node-webkit, правда?
Jānis Gruzis

@ JānisGruzis Ні, ви вантажили додаток з NW.js бінарних файлів .
приблизно

27

Awesomium полегшує користування інтерфейсом HTML у вашому додатку C ++ або .NET

Оновлення

Моя попередня відповідь зараз застаріла. У ці дні ви б з розуму не задумалися використати Electron для цього. Над ним було розроблено безліч популярних настільних додатків.



9

Здається, що рішення для настільних програм HTML / JS / CSS не вистачає.

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

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


1
Виглядав перспективно, але вже не розробляється. Основна команда зараз працює над тим, що дзвонить TideKit, але для того, щоб випустити це, їм потрібно назавжди - PLUS це коштуватиме грошей :(
TheStoryCoder

1
Так, шкода. Це виглядало багатообіцяючим у той час, коли я відповів, хоча. Я думаю, це одна з причин, чому вони нахмурилися на запитання щодо рекомендацій щодо цього матеріалу.
mydoghasworms

3

Вибачте, що лопнув міхур, але Spotify настільний клієнт - це просто веб-браузер . Звичайно, він відкриває певні додаткові функціональні можливості, але він здатний запускати JS та рендерувати HTML / CSS, оскільки у нього є JS-двигун, а також Chromium-рендерінг. Це не допоможе вам кодувати веб-додаток на стороні клієнта та розміщувати його на кількох платформах.

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

Я не маю досвіду роботи з програмою appcelerator , але, схоже, це робиться саме так - і отримуйте дуже сприятливі відгуки в Інтернеті. Ви повинні дати йому піти (якщо ви не хотіли повернутися до 1999 року і прокататись з MS HTA ;)


Він використовує webkit для додатків, але основна програма не базується на html / js
Sucrenoir

1

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

У Chrome ви можете створювати ярлики на робочому столі для веб-сайтів. (ви робите це з Chrome, ви не можете / не повинні упаковувати це у своєму додатку) Chrome Frame відрізняється:

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

Вам знадобиться мати такий тип обгортки для вашого веб-сайту, а тоді все решта - це веб-технології, до яких ви звикли. Ви можете використовувати локальну пам’ятку HTML5 для зберігання даних, коли програма офлайн. Я думаю, що ви навіть можете працювати з SQLite.

Я не знаю, як би ви хотіли отримати доступ до певних функцій ОС. Те, що я описав вище, має ті ж обмеження, що і будь-який "звичайний" веб-сайт. Сподіваємось, це дає вам певні рекомендації щодо того, з чого почати.



0

CEF пропонує велику гнучкість та варіанти налаштування. Але якщо намір швидко розвивати node-webkit - це також хороший варіант. Node-web kit також пропонує можливість виклику модулів вузлів безпосередньо з DOM.

Якщо немає інтелектуальних модулів для інтеграції Node-Webkit, можна запропонувати кращий пробіг. З власними модулями C / C ++ або навіть C # краще з CEF.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.