【问题标题】:JavaScript desktop applications?JavaScript 桌面应用程序?
【发布时间】:2011-06-14 10:24:39
【问题描述】:

是否可以用 JavaScript 创建 Windows 桌面应用程序?

我知道 HTA(HTML 应用程序)程序,但想知道是否有更新的 .NET 或其他解决方案可以让我使用 Visual Studio 中包含的 DLL 库。

【问题讨论】:

  • 我对 .NET 了解不多,但 Actionscript 与 Javascript 非常相似。使用 Flex/AIR,您可以创建桌面应用程序。
  • @EmileBergeron 实际上,这个似乎是 .net 特有的,而不是欺骗
  • @Bergi 这很老了,但听起来也很像 XY 问题,OP 认为利用 .NET 是解决方案。
  • @EmileBergeron 我理解从应用程序调用 .net API 的能力是一种要求,而不是一种解决方案的想法。但是,是的,它已经过时了,可能仍然离题,所以我们就这样吧。

标签: javascript .net desktop-application


【解决方案1】:

最新的 .NET 版本没有这样的功能,但您可以选择这样做:

a) WPF 或 Windows 窗体应用程序中的 WebBrowserObject(它将是嵌入式 Internet Explorer)。

b) Opera Widgets,它是一个基于 Opera 浏览器的演示引擎,可让您使用标准 Web 技术实现桌面应用程序,它遵循 W3C 小部件标准。这些应用程序可以独立运行,这意味着用户无需打开 Opera 即可运行它们。有一个对应的:Opera 必须安装在用户的机器上。

还有其他选项,例如 Mozilla XUL,但它对桌面应用程序开发的有限支持会阻止您使用它。

【讨论】:

【解决方案2】:

我知道这个问题有点老了,但我想我会为那里的 googlers 回答。

您可以使用this project。它基本上是一个可以访问 .Net 框架的 javascript 解释器。

所以你可以这样做:

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

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

它确实有效,但是我没有尝试过更复杂的 winforms 应用程序,所以不能说它最终是否会崩溃。

如果有人尝试,请告诉我。

编辑 1:好吧,我尝试了一个稍微复杂一点的例子,它也有效。试试这个:

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);

圭多

【讨论】:

    【解决方案3】:

    有一些解决方案可以让您将 javascript/html/css 代码打包到跨平台的“本机”应用程序中,通常带有安装程序和更新机制。

    在我的头顶:

    【讨论】:

    • 如何在没有 Flash 的情况下在 AIR 中创建 GUI? Flash 不能处理所有的图形元素吗?另外,我是否需要购买 Adob​​e IDE 才能在 AIR 中开发?请注意,我不太关心跨平台兼容性,尽管这是一个加分项。
    • AIR 运行时实际上包括 webkit。这是一篇旧博客文章,展示了如何制作“hello world”纯 HTML air 应用程序:filchiprogrammer.wordpress.com/2008/03/12/… - 至于编译 AIR 应用程序,您可以使用 Adob​​e 的免费 Air SDK (adobe.com/products/air/sdk) 来完成。如果你想要一个免费的 IDE,FlashDevelop 可能是目前最好的选择。
    • 我们不要忘记诺基亚流行的 Qt。他们最新的 Qt 5 实现了 GUI 小部件框架 Qt Quick 2,它允许在 Javascript 中定义窗口、控件和事件处理程序,因此可以开发简单的应用程序(无持久性、无套接字等,但有图形设备)仅在 Javascript 中,但允许持久性等的类可以从 C++ 暴露给 Javascript。例如,我认为可以仅用 Javascript 制作计算器。哦,Qt 是跨平台的,可以构建跨平台的应用程序,并且可以免费用于开源项目。
    • 哦,还有 [Qt WebEngine] (doc.qt.io/qt-5/qtwebengine-overview.html) 可以用来在桌面应用程序中显示 Web 内容,这更符合您的描述。当然,在 2011 年您发表评论时,这些组件(Qt Quick 和 WebEnginge)可能还不存在。
    【解决方案4】:

    您可以使用 Mozilla 的 XULRunner 环境在您构建的应用程序中使用本地 JavaScript。 Mozilla 的环境可以利用 XPCOM 组件和XPCOM components can be developed using C++

    因此,一种选择是使用这个久经考验的环境来使用 JavaScript 和 XUL 构建您的应用程序,并在 XPCOM 组件中使用 C++ 和 DLL 的强大功能。

    在此平台上开发的桌面应用程序示例包括:

    【讨论】:

      【解决方案5】:

      您可以在 WinForms 应用程序(Safari 和 Google Chrome 中使用的 HTML 引擎)中使用 WebKit。

      .net控制:http://webkitdotnet.sourceforge.net/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-12
        • 1970-01-01
        • 2011-10-19
        • 2011-04-19
        • 2012-09-25
        • 2011-11-20
        • 2021-12-16
        相关资源
        最近更新 更多