Come sviluppare app desktop usando HTML / CSS / JavaScript? [chiuso]


189

Innanzitutto, non mi interessa farlo professionalmente. Sono uno sviluppatore web, un mio collega recentemente partito per Spotify e ha detto che lavorerà principalmente in JavaScript per l'app Spotify Desktop. Ha detto che utilizza "Chrome frame" e tutto all'interno è fatto come un'app Web (HTML / JS / CSS).

Come sviluppatore web che non ha mai creato nulla per desktop, questa è un'ottima notizia. Se riesco a utilizzare le tecnologie che già conosco e le implemento all'interno di una sorta di "frame" ed essere ancora in grado di creare un'applicazione Windows o meglio ancora multipiattaforma.

So di non aver menzionato nulla del database, ma anche una semplice app desktop hello world con tecnologie web sarebbe ottima per iniziare.

Quindi come si fa a fare questo? Esattamente cosa devo / devo sapere?


Va notato che ci sono almeno due livelli non esclusivi di web-app-iness. Una sarebbe un'app stile client sul lato client, a pagina singola, e un'altra sarebbe un'app che mantiene lo stato con un database o qualcosa del genere. (Ovviamente, le migliori app sono entrambe.) Puoi imparare a fare l'una senza imparare molto sull'altra.
Waleed Khan,

Un altro thread correlato qui [Puoi fare lo sviluppo del desktop usando JavaScript?] [1] [1]: stackoverflow.com/questions/109399/… Saluti, Ben
benbai123

Lo fai male. Il Web non è progettato per l'app desktop. Se vuoi puoi usare QML / QtQuick, che è un buon compromesso (ma rimane desktop, non web!)
Stef


Risposte:


74

Puoi iniziare con Titanium per desktop dev. Inoltre puoi dare un'occhiata a Chromium Embedded Framework . È fondamentalmente un controllo del browser web basato sul cromo.

È scritto in C ++ in modo da poter fare tutte le cose del sistema operativo di basso livello che desideri (Growl, icone nella barra delle applicazioni, accesso ai file locali, porte com, ecc.) Nella tua app contenitore, e quindi tutta la logica e la gui dell'applicazione in html / javascript. Ti consente di intercettare qualsiasi richiesta http per servire risorse locali o eseguire alcune azioni personalizzate. Ad esempio, una richiesta a http://localapp.com/SetTrayIconState?state=active potrebbe essere intercettata dal contenitore e quindi chiamare la funzione C ++ per aggiornare l'icona della barra delle applicazioni.

Inoltre, consente di creare funzioni che possono essere richiamate direttamente da JavaScript.

È molto difficile eseguire il debug di JavaScript direttamente in CEF. Non c'è supporto per qualcosa come Firebug.

Puoi anche provare AppJS.com (aiuta a creare applicazioni desktop. Per Linux, Windows e Mac usando HTML, CSS e JavaScript)

Inoltre, come sottolineato da @Clint, il team di brackets.io (Adobe) ha creato una fantastica shell utilizzando Chromium Embedded Framework che rende molto più facile iniziare. Si chiama shell parentesi: github.com/adobe/brackets-shell Scopri di più qui: clintberry.com/2013/html5-desktop-apps-with-brackets-shell


3
CEF ha degli strumenti di sviluppo Chrome incorporati in modo da poterlo utilizzare per eseguire il debug di js. AppJS ha anche un accesso di basso livello al sistema operativo usando le API nodejs.
Morteza Milani,

1
Il team di Bracket.io (Adobe) ha creato una fantastica shell utilizzando Chromium Embedded Framework che rende molto più semplice iniziare. Si chiama shell parentesi: github.com/adobe/brackets-shell Scopri di più qui: clintberry.com/2013/html5-desktop-apps-with-brackets-shell
Clint

Attualmente sto usando CEF ed Eclipse come strumenti di sviluppo ed è possibile collegare CEF a Chrome Developper Tools passando --remote-debugging-port = 8080 alle configurazioni di esecuzione per gli argomenti del programma, quindi vai a localhost: 8080 in Chrome . Quindi, ti preghiamo di rimuovere la parte - t è molto difficile eseguire il debug di JavaScript direttamente in CEF. Non c'è supporto per qualcosa come Firebug. -
Stranded Kid,

Inoltre, sto iniziando a sviluppare Kontena ith ン テ ナgithub.com/jhg/kontena per lo sviluppo di una soluzione per Win32, Linux, Unix come, Mac e SmartPhone che sarà basata su CEF, PhoneGap, Backet.io di Adobe, AppJS, ecc. È così instabile e ora è solo un prototipo per ottenere un MVP, è scritto in Python per il concetto di test ma verrà tradotto il codice in C ++ / C con QT5 (ora usa QT4) e quando si trova in C ++ / C inizia la traduzione per mobil supporto.

@JHG buon lavoro .. Facci sapere quando è stato ufficialmente rilasciato e corretto in modo corretto
Alfred

33

NW.js

(Precedentemente noto come node-webkit)

Suggerirei NW.js se hai familiarità con Node o hai esperienza con JavaScript.

NW.js è un runtime di app basato su Chromium e node.js.

Caratteristiche

  • App scritte in HTML5, CSS3, JS e WebGL moderni
  • Supporto completo per le API Node.js e tutti i suoi moduli di terze parti.
  • Buone prestazioni: Node e WebKit vengono eseguiti nello stesso thread: le chiamate di funzione vengono effettuate in modo semplice; gli oggetti sono nello stesso heap e possono semplicemente fare riferimento a vicenda
  • Facile da impacchettare e distribuire app
  • Disponibile su Linux, Mac OS X e Windows

Puoi trovare il repository NW.js qui e una buona introduzione a NW.js qui . Se hai voglia di imparare Node.js , consiglierei questo post SO con molti buoni collegamenti.


2
Distaccato. Ottimo strumento.
Erik Reppen,

Ma questo non può essere distribuito tra le persone senza chiedere loro di installare node e node-webkit, giusto?
Jānis Gruzis,

@ JānisGruzis No, hai spedito la vostra applicazione con NW.js binari .
circa

27

Awesomium semplifica l'uso dell'interfaccia utente HTML nell'app C ++ o .NET

Aggiornare

La mia risposta precedente ora è obsoleta. In questi giorni saresti pazzo a non esaminare l'utilizzo di Electron per questo. Molte app desktop popolari sono state sviluppate su di essa.



9

Sembra che le soluzioni per le app desktop HTML / JS / CSS non siano poche.

Una soluzione che ho appena trovato è TideSDK: http://www.tidesdk.org/ , che sembra molto promettente, guardando la documentazione.

Puoi svilupparlo con Python, PHP o Ruby e comprimerlo per Mac, Windows o Linux.


1
Sembrava promettente, ma non essendo più sviluppato sembra. Il team principale ora sta lavorando a qualcosa chiamato TideKit ma ci vuole un'eternità per rilasciarlo
IN

1
Sì, peccato. Sembrava promettente al momento in cui ho risposto però. Immagino che sia uno dei motivi per cui aggrottano le sopracciglia su domande riguardanti raccomandazioni per cose.
mydoghasworms

3

Mi dispiace far scoppiare la bolla, ma il client desktop Spotify è solo un browser basato su Webkit . Ovviamente espone funzionalità aggiuntive specifiche, ma è in grado di eseguire solo JS e renderizzare HTML / CSS perché ha un motore JS e un motore di rendering Chromium. Questo non ti aiuta con la codifica di un'app Web sul lato client e la distribuzione su più piattaforme.

Quello che stai cercando è simile a Sencha Touch , un framework che consente di distribuire nativamente app HTML5 su dispositivi iOS, Android e Blackberry. Fondamentalmente agisce come un intermediario tra determinate chiamate API e funzionalità specifiche del dispositivo disponibili.

Non ho esperienza con appcelerator , sembra che stia facendo esattamente questo - e ottengo recensioni molto favorevoli online. Dovresti provarlo (a meno che non volessi tornare al 1999 e girare con MS HTA ;)


Utilizza webkit per l'applicazione ma il software principale non è basato su html / js
Sucrenoir

1

So che c'è Fluid and Prism (ce ne sono altri, è quello che ho usato per usare) che ti consente di caricare un sito Web in quella che sembra un'app standalone.

In Chrome, puoi creare collegamenti sul desktop per i siti Web. (lo fai da Chrome, non puoi / non dovresti comprimerlo con la tua app) Chrome Frame è diverso:

Google Chrome Frame è un plug-in progettato per Internet Explorer basato sul progetto Chromium open source; porta le tecnologie web aperte di Google Chrome su Internet Explorer.

Dovresti avere una sorta di wrapper come quello per la tua webapp, e il resto sono le tecnologie web a cui sei abituato. Puoi utilizzare l'archiviazione locale HTML5 per archiviare i dati mentre l'app è offline. Penso che potresti persino essere in grado di lavorare con SQLite.

Tuttavia, non so come faresti per accedere alle funzionalità specifiche del sistema operativo. Ciò che ho descritto sopra presenta le stesse limitazioni di qualsiasi sito Web "normale". Spero che questo ti dia una sorta di guida su dove iniziare.



0

CEF offre molta flessibilità e opzioni per la personalizzazione. Ma se l'intento è quello di sviluppare rapidamente node-webkit è anche una buona opzione. Node-web kit offre anche la possibilità di chiamare i moduli del nodo direttamente da DOM.

Se non ci sono moduli nativi per integrare Node-Webkit può offrire un chilometraggio migliore. Con i moduli nativi C / C ++ o anche C # è meglio con CEF.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.