共享JavaScript代码

共享JavaScript代码

问题描述:

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

  • 托管JScript - 是否有一个编译器为此可用,将产生可以在桌面CLR上运行的东西?我只看到了Silverlight运行时发布的示例。这听起来不像是在桌面上正式提供的,但我愿意尝试一些不那么幸运的事情,就像我可以使用Silverlight工具进行编译,然后在桌面CLR上运行?
  • 的JScript .NET - 听起来像它有足够的自定义语言扩展其在浏览器中真的很难相同的代码运行在那里,但也许有一个办法......?

如果没有这些工作,我想我的选择是:

  • 有一个C#版本和JavaScript版本,我必须保持同步(呸)。
  • 编写一个在编译时运行的预处理器,将我的JavaScript变成JScript .NET或我可以编译成.NET程序集的东西。
  • 脚本#:看起来像这样将C#代码转换为JavaScript代码。不是很棒,因为我希望能够直接严格调整JavaScript代码,但它可以工作。

任何人有任何的这些选项的成功?

JScript.Net实际上是EMCAScript3大部分符合。只要你把你的代码作为一个处理库(只有它处理库等 - 使用回调来与程序交互),你应该没问题。 我正在做类似的事情,使用javascript作为我的核心解析库,然后在python,dotnet和php中使用它。

+0

我用这个(使用JScript.NET)的问题是虽然可以从其他语言调用JScript.NET中定义的函数和类,但似乎没有办法访问变量和运行代码定义在“顶层”。此外,如果函数或方法尝试访问在全局范围初始化的事物,则这些值将被初始化。 如果您有不同的体验,我很乐意听到! – 2009-06-01 22:55:28

如何另一种选择:

  • 主机通过的WinForms' WebBrowser控件您的桌面应用程序内的JavaScript应用?

这可能吗?

您也可以访问WebBrowser控件的DOM,但不是你想要的一切完全支持。

管理的JavaScript(IronJScript)似乎已被杀害。见this answer