Daniel,

*> requiring user to install whole Node.js platform would seem to be too 
cumbersome*

Node is just a single standalone executable, you can drop it into your 
project and use it without it being cumbersome. The installer just puts the 
executable in your path and also installs npm (which isn't necessary for 
end-users of a desktop app that depends on node).

It depends on your use-case, but in general I think you'll find it easier 
to run node.exe as a child process and to communicate with it via stdio, 
than to embed it or compile it as part of your main application.

If you're interested in building a Windows GUI (not a console app) then 
you'll run into issues b/c Node is setup as a console app. It should be 
possible, but it would require changing the subsystem and providing some 
dummy stdin/stdout (more info here 
<http://grokbase.com/t/gg/nodejs/126m9gck69/windows-compiling-as-a-console-less-windows-application>,
 
here 
<http://stackoverflow.com/questions/22653010/prevent-console-window-from-being-created-in-custom-node-js-build>
 
and here 
<http://grokbase.com/t/gg/nodejs/14bxs07a4a/using-node-in-a-win32-gui-application-fails-stdin-stderr-stdout>
).

As others have mentioned, nw.js <https://github.com/nwjs/nw.js> (formerly 
node-webkit) and atom-shell <https://github.com/atom/atom-shell> are the 
highest-profile platforms that do what you're looking for. nw.js actually 
merges the node.js and chromium event loops into one, so the project has to 
maintain a hacked version of node & a hacked version of Chromium. 
atom-shell, OTOH, follows the separate process approach outlined above. 
I've done something similar, creating a custom build of Chromium and 
communicating with the node executable via Chromium's native messaging 
<https://developer.chrome.com/extensions/messaging#native-messaging>.

*> It would be especially undesired on mobile*

Mobile is a different ballgame, especially if you want to put your app in 
iOS's App Store. If you're content with running your app on jailbroken 
phones, you can do it with NodObjC <https://github.com/TooTallNate/NodObjC>, 
but it won't run on an iPhone that isn't jailbroken b/c Node is tightly 
tied to v8 which does JIT compilation which isn't allowed on iPhones for 
security reasons. Instead you'll need to use a project that uses pieces of 
Node's implementation or just mimics Node's API with a non-JIT javascript 
engine like JavaScriptCore, such as Node.app/Nodelike 
<https://github.com/node-app/Nodelike> or neu.Node 
<https://github.com/snakajima/neunode>.

If you're not married to Javascript, you might consider a C/C++ library 
that provide a node-like API (node.native 
<https://github.com/d5/node.native>, nope.c 
<https://github.com/riolet/nope.c>, node.c 
<https://github.com/trevnorris/node.c>, or a combo of tiny clibs 
<https://github.com/clibs/clib/wiki/Packages>) with skia 
<https://code.google.com/p/skia/> or cairo <http://cairographics.org/> for 
cross-platform graphics/GUI.

-- Peter Rust

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/3bdd5b02-71a8-4728-a51b-03e311c34e88%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to