2008-11-07 185 views
4

我有一組核心的,複雜的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代碼,但它可以工作。

任何人有任何的這些選項的成功?

回答

1

JScript.Net實際上是EMCAScript3大部分符合。只要你把你的代碼作爲一個處理庫(只有它處理庫等 - 使用回調來與程序交互),你應該沒問題。 我正在做類似的事情,使用javascript作爲我的核心解析庫,然後在python,dotnet和php中使用它。

+0

我用這個(使用JScript.NET)的問題是雖然可以從其他語言調用JScript.NET中定義的函數和類,但似乎沒有辦法訪問變量和運行代碼定義在「頂層」。此外,如果函數或方法嘗試訪問在全局範圍初始化的事物,則這些值將被初始化。 如果您有不同的體驗,我很樂意聽到! – 2009-06-01 22:55:28

0

如何另一種選擇:

  • 主機通過的WinForms' WebBrowser控件您的桌面應用程序內的JavaScript應用?

這可能嗎?

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

1

管理的JavaScript(IronJScript)似乎已被殺害。見this answer