【问题标题】:Sharing JavaScript code between .NET desktop and browser在 .NET 桌面和浏览器之间共享 JavaScript 代码
【发布时间】:2023-03-14 21:12:02
【问题描述】:

我有一组核心、复杂的 JavaScript 数据结构/类,我希望它们能够在浏览器中作为 JavaScript 使用,并在带有 .NET 3.5 的桌面上运行。是否可以将 Web 友好的 JavaScript 编译成我的 C# 代码可以访问的程序集?

  • 托管 JScript - 是否有可用的编译器来生成可以在桌面 CLR 上运行的东西?我只看到了 Silverlight 运行时的已发布示例。听起来好像没有正式在桌面上可用,但我愿意尝试一些不那么幸运的东西,比如我可以用 Silverlight 工具编译然后在桌面 CLR 上运行吗?
  • JScript .NET - 听起来它有足够的自定义语言扩展,在浏览器中运行相同的代码会非常困难,但也许有办法......?

如果这些都不起作用,我想我的选择是:

  • 有一个 C# 版本和一个 JavaScript 版本,我必须保持同步(糟糕)。
  • 编写在编译时运行的各种预处理器,以将我的 JavaScript 转换为 JScript .NET 或我可以编译为 .NET 程序集的东西。
  • Script#:看起来这会将 C# 代码转换为 JavaScript 代码。不太好,因为我希望能够直接大量调整 JavaScript 代码,但它可以工作。

任何人都成功地使用了这些选项?

【问题讨论】:

    标签: .net javascript script# jscript.net managed-jscript


    【解决方案1】:

    JScript.Net 实际上大部分都符合 EMCAScript3。只要您将代码视为处理库(仅让它进行处理等 - 使用回调与程序交互),您应该没问题。 我正在做类似的事情,使用 javascript 作为我的核心解析库,然后在 python、dotnet 和 php 中使用它。

    【讨论】:

    • 我遇到的问题(使用 JScript.NET)是,虽然可以从其他语言调用 JScript.NET 中定义的函数和类,但似乎没有办法访问变量并运行“在顶层”定义的代码。此外,如果函数或方法尝试访问在全局范围内初始化的事物,则这些值是未初始化的。如果你有不同的经历,我很想听听!
    【解决方案2】:

    托管 JavaScript (IronJScript) 似乎已被杀死。见this answer

    【讨论】:

      【解决方案3】:

      另一种选择如何:

      • 通过 winforms 的 WebBrowser 控件在桌面应用程序中托管 javascript 应用程序?

      这可能吗?

      您还可以从 WebBrowser 控件访问 DOM,但并非完全支持您想要的所有内容。

      【讨论】:

        猜你喜欢
        • 2011-03-14
        • 1970-01-01
        • 1970-01-01
        • 2016-11-03
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 2021-10-06
        • 1970-01-01
        相关资源
        最近更新 更多