JavaScript desktop applications?

2019-03-28 11:54发布

问题:

Is it possible to create Windows desktop applications in JavaScript?

I am aware of HTA (HTML Application) programs, but was wondering if there were a newer .NET solution where I could make use of the DLL libraries included with Visual Studio.

回答1:

Latest .NET version doesn't have such feature, but you've options to do it:

a) A WebBrowserObject in a WPF or Windows Forms application (it'll be an embedded Internet Explorer).

b) Opera Widgets, which is a Opera browser-based presentation engine which lets you implement desktop applications with standard Web technologies and it follows the W3C widgets standard. These applications can run standalone, meaning that user won't need to open Opera to run them. There's a counterpart: Opera must be installed in user's machine.

There're other options like Mozilla XUL but its limited support for desktop application development would prevent you from using it.



回答2:

I know this question is a bit old, but I thought I'd answer for the googlers out there.

You could use this project. Its basically a javascript interepter that has access to the .Net framework.

So you could do something like:

jish.assembly('path/to/System.Windows.Forms.dll');

var mb = jish.create('System.Windows.Forms.MessageBox');
mb.Show('Hello World');

And it works, I've not however tried more complex winforms apps so can't say whether it will fall down eventually.

Let me know if anyone tries it.

Edit 1: Well I tried it with a slightly more complex example and it worked also. Try this:

jish.assembly('path/to/System.Drawing.dll')
jish.assembly('path/to/System.Windows.Forms.dll')

var app = jish.create('System.Windows.Forms.Application');
var form = jish.create('System.Windows.Forms.Form');
var lbl = jish.create('System.Windows.Forms.Label');
form.Text = lbl.Text = 'Hello World!';
lbl.Location = jish.create('System.Drawing.Point', 50, 50);
form.Controls.Add(lbl);

app.Run(form);

Guido



回答3:

There are a few solutions out there that will let you package javascript/html/css code into a cross-platform "native" application, usually complete with an installer and updating mechanism.

Off the top of my head:

  • Mozilla Prism, not under active development anymore, apparently. open source.
  • Adobe AIR, which doesn't actually have to use Flash, contrary to popular belief. actively developed, closed source.
  • Appcelerator Titanium Desktop, which is both open source and actively developed.


回答4:

You could use Mozilla's XULRunner environment to utilize local JavaScript in an application you build. Mozilla's environment can take advantage of XPCOM components, and XPCOM components can be developed using C++.

Therefore, one option could be to use this tried and tested environment to build your application using JavaScript and XUL, and use the power of C++ and DLL's in the XPCOM components.

Examples of desktop applications developed on this platform include:

  • Firefox - Web Browser
  • Thunderbird - An Email Client
  • Songbird - A Media Player
  • Sunbird - A Calendar Application


回答5:

You can use WebKit in a WinForms application (the HTML engine used in Safari and Google Chrome).

.Net control: http://webkitdotnet.sourceforge.net/