只是想知道是否有人尝试过将任何js引擎嵌入到。net环境中。我可以找到并实际使用(经过大量的痛苦和努力,因为它相当过时,还没有完全完成)spidermonkey-dotnet项目。有人有这方面的经验吗?引擎像SquirrelFish, V8..

并不是说我对Mozilla的Spidermonkey不满意(在核心ASP中使用它为自定义组件提供类似rails的迷你框架)。NET应用程序),但我仍然想进一步探索这些选项。命令行解决方案不是我所需要的,我不能依赖CLR以外的任何东西,我需要从/到JavaScript/ c#对象调用方法。

// c# class
public class A
{
    public string Hello(string msg)
    {
        return msg + " whatewer";
    }
}

// js snippet
var a = new A();
console.log(a.Hello('Call me')); // i have a console.log implemented, don't worry, it's not a client-side code :)

澄清一下——我并不是试图用服务器端javascript编写应用程序本身。它仅用于编写自定义用户子应用程序(可以看作某种DSL)。让普通人用js编程比用c#更容易(也更安全)。


当前回答

我相信所有主要的开源JS引擎(JavaScriptCore、SpiderMonkey、V8和KJS)都提供了嵌入api。我唯一真正熟悉的是JavaScriptCore(这是SquirrelFish所在的JS引擎的名称),它提供了一个纯C API。如果没记错的话(自从我使用。net已经有一段时间了)。net在C API中对链接提供了相当好的支持。

老实说,我不确定其他引擎的API是什么样的,但我知道它们都提供了API。

也就是说,这取决于你的目的。NET可能是最好的,因为所有这些其他引擎都需要你将它们包含在你的应用程序中,因为JSC是唯一一个实际附带操作系统的引擎,但这个操作系统是MacOS:D

其他回答

你可以试试ironJS,看起来很有前途,尽管它正在大力开发中。https://github.com/fholm/IronJS

试试Javascript . net吧。它最初托管在CodePlex上,这里)

项目讨论:http://javascriptdotnet.codeplex.com/discussions

它实现了谷歌V8。您可以使用它直接从. net代码编译和运行JavaScript,并提供JavaScript代码使用的CLI对象。它从JavaScript生成本地代码。

这里有一个c#的ActiveX脚本引擎主机的实现:用c#解析和执行JS

它允许在原生32位或64位进程中直接从c#使用Javascript(或VBScript)。完整的源代码是大约500行c#代码。它只对已安装的JScript(或VBScript)引擎DLL有隐式依赖。

例如,以下代码:

Console.WriteLine(ScriptEngine.Eval("jscript", "1+2/3"));

将显示1.66666666666667

使用JSCRIPT。NET获取js的库(dll)。然后在. net应用程序中引用这个dll,就完成了。完成了!

开源JavaScript解释器Jint (http://jint.codeplex.com)正是您想要的。

编辑: 该项目已经完全重写,现在托管在Github上https://github.com/sebastienros/jint