Standalone-Anwendungen mit node-webkit
Gestern habe ich ein wenig in node-webkit reingeschnuppert. Damit sollen sich ganz einfach Desktop-Anwendungen auf Basis von HTML, JavaScript und Node.js erstellen lassen. Die erstellte Anwendung lässt sich dann relativ einfach für verschiedene Betriebssysteme verpacken. Für nicht allzu rechen-intensive Spiele scheint mir das recht interessant. Tatsächlich verwendet auch das kürzlich erschiene A Wizard's Lizard node-webkit [1].
Für eine kleine Demo habe ich das Beispiel von three.js genommen und als Anwendung verpackt. Das HTML und JavaScript lasse ich hier mal aus. Mein package.json
für ein Fenster ohne Toolbar sieht wie folgt aus:
{ "main": "index.html", "name": "nw-demo", "window": { "frame": true, "height": 600, "kiosk": false, "toolbar": false, "width": 900 } }
Den Inhalt des Projekt-Verzeichnisses verpackt man als nächstes als ZIP-Archiv:
zip -r demo.nw *
Diese Datei lässt sich mit nw demo.nw
ausführen, benötigt aber eben weiterhin node-webkit auf dem System. Im nächsten Schritt wird node-webkit daher in das Archiv integriert:
cat ~/node-webkit-v0.10.5/nw demo.nw > demo && chmod +x demo
Versucht man nun ./demo
auszuführen, gibt es eine Fehlermeldung:
[13445:1019/161018:FATAL:content_main_runner.cc(751)] Check failed: base::i18n::InitializeICU().
Im selben Verzeichnis wie die Standalone-Anwendung müssen auch die Dateien nw.pak und icudtl.dat liegen. Beide Dateien finden sich im selben Verzeichnis wie nw
, hier also ~/node-webkit-v0.10.5/
. Einfach herüberkopieren und die Anwendung lässt sich starten.
Meine kleine Demo habe ich auf GitHub hochgeladen. Darin befindet sich auch ein Build-Skript für Linux, das sich um alles kümmert. Es muss nur der Pfad zur node-webkit-Installation angepasst werden.
[1] forum.lostdecadegames.com/topic/115/node-webkit-and-steam
Comments
Ich finde die Idee hinter dem node-webkit großartig. So könnte man quasi auch als Webentwickler offline-Applikationen entwickeln. Mich würde noch interessieren, ob man so eine Anwendung auch auf Android laufen lassen kann.
Übrigens ein schönes neues Theme. Wahrscheinlich ist das dann auch schon die neue Version von aestas? Wäre noch ganz cool, wenn man auf Referenzen wie [1] direkt im Artikel rauf klicken könnte, um dann unten bei den Referenzen zu landen. In etwa wie bei Wikipedia.
Ein Nachteil ist nur, dass der Quellcode wohl nicht geschützt werden kann. Aus der Standalone-Anwendung muss nur der erste Teil „abgeschnitten“ werden und dann hat man ein ZIP-Archiv. Wobei … bei JAR-Dateien ist das auch nicht anders; siehe Minecraft.Habe es noch nicht ausprobiert, aber es geht wohl doch, wenn auch mit ein paar Nachteilen (muss für jedes OS durchgeführt werden, ist ~30% langsamer …).
Android und iOS werden leider nicht unterstützt, nur Linux/Mac/Win.
Yep, neues Theme zusammen mit dem CMS. :)
Bin ultimativ dann aber zu electron gewechselt und habe es keine Sekunde bereut :)
(Ich brauchte für meine Anwendung globale Hotkeys - unter nwjs gibt es auch etwas zu aber das hab ich irgendwie nie ans laufen bekommen, das Selbe unter electron klappte auf Anhieb).
Das Prinzip ist recht ähnlich, man hat einen Webkit-Browser der neben dem regulären JS auch node.js interpretieren kann, das ganze verkleidet in Form einer nativen App.