I'm thinking of building a basic tool. In the process of building this basic tool, I was hoping to learn a new skill. I was hoping to write the tool using pure JavaScript. The tool basically needs to be a reusable library. The reusable library will primarily call out to third-party command-line tools. Occasionally, there may be some file system level operations I need to include in the library like copying or deleting files. I would also like to add a UI to this thing.
I feel my idea breaks down because I want to do native stuff across environments. I do not want to use Java. Ideally, I would like to write my code using JavaScript. I do not know about Node.js, however, from what I'm reading, it seems like I could use Node.js for my reusable library. However, I'm not sure what I could use to interact with this library from a UI perspective.
Am I on to a good idea using Node as my runtime in this case? If so, is there a way that I can create a cross platform UI that can interact with this library? Thank you!
A couple of possibilities come to mind.
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 to call Node.js modules directly from DOM and enables a new way of writing native applications with all Web technologies.
AppJS is an SDK to develop desktop applications using Node.js melded with Chromium.
Packaged apps deliver an experience as capable as a native app, but as safe as a web page. Just like web apps, packaged apps are written in HTML5, JavaScript, and CSS. But packaged apps look and behave like native apps, and they have native-like capabilities that are much more powerful than those available to web apps.
This module demonstrates how well Node.js and Google Chrome (as two autonomous binaries) can cooperate wihtout much programatic interfacing. Node-chrome is the absolute least amount of glue needed to create a desktop experience with Node.js. The module will run on platforms that Chrome and Node.js run on.
IMO: node-webkit is pretty interesting in that packaging (in a basic app scenario) is as simple as cat'ing a zip of your apps resources onto an executable. Distribute the right executable for the right environment and you are done.
Check out AppJS it is an SDK to develop desktop applications using Node.js. It also has tools for exposing native C++ bindings to your JavaScript. For the fronted you can use whatever front end framework you like such as bootstrap.