在.NET框架中执行JavaScript代码是否可行?

8
我希望能够在运行.Net环境的服务器端执行JavaScript。如何实现呢?主要需要文本处理功能,输入一个字符串并从JavaScript代码中返回一个字符串,无需窗口交互。

3
.Net 在文本处理方面表现不错。你是否需要 JavaScript 才能提供的特定功能? - Marcelo Cantos
我赞同@MarceloCantos的评论。在文本处理方面,离开.Net有什么优势? - KP.
2
这似乎是一个奇怪的想法。你到底想要实现什么? - asawyer
我需要以自动化的方式测试JavaScript代码是否正确执行。 - Karim
有大量的JavaScript单元测试框架可供选择。 - asawyer
Jasmine、Mocha、CucumberJs 等等。 - Steen Tøttrup
2个回答

13

是的,有几个可供使用的JS引擎。 JurassicJintIronJS是基于.NET的,但你也可以与其他引擎进行交互,如来自Chrome浏览器的V8引擎或IE的ActiveScript引擎。

编辑:五年后,.NET原生的JS引擎在某种程度上落后了(没有一个支持ES6,而IronJS似乎被放弃了),但现在我们也有了开源的ChakraCore,它很容易与.NET集成和使用,只需使用其中一个现成的包装器即可。

此外,JavaScriptEngineSwitcher允许通过一个公共接口在.NET代码中使用几乎所有现有的JS引擎,因此切换引擎不需要更改代码。


有没有关于如何与Chrome或IE JavaScript引擎交互的链接? - Karim
1
看起来 Jint 是最好的选择 :) - Karim
1
很酷的你回来更新这个,几年后。现在我要去看看ChakraCore。谢谢! - Chev

4
你可以编写一个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的程序集。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接