2012-04-25 73 views
6

我希望能夠在運行.net環境的服務器端執行JavaScript。
那麼如何做到這一點? 主要是我需要文本處理函數,我會輸入一個字符串並獲取從JavaScript代碼返回的字符串。
不需要窗口交互。是否可以在.net框架中執行JavaScript代碼?

+3

.net對於文本處理來說非常不錯。有什麼特定的需要,只有JavaScript可以提供? – 2012-04-25 12:57:40

+0

我第二@MarceloCantos的評論。用於文本處理的.Net之外的優點是什麼? – 2012-04-25 13:00:08

+2

這似乎是想要做的一件奇怪的事情。你究竟想要完成什麼? – asawyer 2012-04-25 13:00:26

回答

11

是的,有幾個JS引擎可以使用。 Jurassic,JintIronJS是基於.NET的,但您也可以與其他人接口,例如Chrome瀏覽器中的V8或IE中的ActiveScript。

編輯:五年後,JS引擎原產於.NET稍微滯後(無支持ES6着呢,IronJS似乎放棄了),但我們現在也有開源ChakraCore這是不是很難在.NET中集成和使用一個可用的包裝器。

此外,JavaScriptEngineSwitcher允許通過通用接口使用.NET代碼中幾乎任何現有的JS引擎,因此交換引擎不需要更改代碼。

+0

有關如何與Chrome或JavaScript引擎交互的任何鏈接? – Karim 2012-04-25 13:19:53

+1

它看起來像Jint是最好的選擇:) – Karim 2012-04-25 17:45:02

3

您可以編寫一個JScript.Net文件並將其編譯到一個包含jsc的程序集中,然後像使用其他任何程序集一樣使用該程序集。

實施例:

package Your.Desired.Package.Name { 
    Class SomeClassName { 
     public static function doSomething(foo) } 
      var bar; 

      // Fairly normal JavaScript code here 

      if (foo.match(/sometest/)) { 
       // Do something 
      } 
      else { 
       // Do something else 
      } 
     } 
    } 
} 

packageclass結構其他,在JScript.Net代碼基本上是JavaScript的。如果你想成爲惡魔,你甚至有eval。 :-)

然後,您可以編譯成這樣一個組件:

jsc /target:library TheFileName.js 

...它生產和組裝的TheFileName.dll

+0

這很漂亮。 – asawyer 2012-04-25 13:17:19

相關問題