Thursday, October 09, 2014

node.js as a desktop app runtime, to build "desktop" apps with it? node-webkit...

[DebuggerStepThrough] - Desktop applications with nodejs! if winforms and wpf aren't dead already!

I used to disfavor javascript over other languages because it wasn't type-safe, it was hard to refactor, hard to write tests, find usages in the code, ...and the list goes on...

The past few years though, some amazing things have happened in the world that now make javascript an amazing language!


And my personal favorite - NodeJS! This tool is amazing! It can do so many things from being a fully functional and scalable backend server to a framework for writing desktop applications.

While looking into the code of PopcornTime I realized it was written in nodejs, with a framework called node-webkit. ...


The steps taken to create a simple desktop application with node-webkit are super-simple! (and easier than building a desktop application with any other language i've tried!)


Start building your application just like you would a website. You can use the browser just like you're used to, to see your work.

When you want to start accessing node modules, you'll need to start running it with node-webkit.

In order to do this, just run the node-webkit executable from the command line with your main html file as a parameter.

C:\Utilities\node-webkit\nw.exe index.html



Call all Node.js modules directly from DOM and enable a new way of writing applications with all Web technologies


node-webkit is an app runtime based on Chromium and node.js. You can write native apps in HTML and JavaScript with node-webkit. It also lets you call Node.js modules directly from the DOM and enables a new way of writing native applications with all Web technologies.

It's created and developed in the Intel Open Source Technology Center.

Introduction to node-webkit (slides)
Creating Desktop Applications With node-webkit
WebApp to DesktopApp with node-webkit (slides)
Essay on the history and internals of the project


  • Apps written in modern HTML5, CSS3, JS and WebGL.
  • Complete support for Node.js APIs and all its third party modules.
  • Good performance: Node and WebKit runs in the same thread: Function calls are made straightforward; objects are in the same heap and can just reference each other;
  • Easy to package and distribute apps.
  • Available on Linux, Mac OS X and Windows


I'm not jumping out of my WPF world for this, nor do I see it taking on the future of Universal App's, but I still think this is a pretty cool project and idea. Security scares me a little, but hey, it always scares me a little... lol

No comments: