只是想知道是否有人尝试过将任何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#更容易(也更安全)。


当前回答

如果语言不是问题(任何沙盒脚本语言),那么。net有LUA。. net框架的Silverlight版本也是沙盒的。

其他回答

V8。NET是这个领域的新成员(2013年4月),它更紧密地封装了原生V8引擎的功能。它允许对实现进行更多的控制。

如果语言不是问题(任何沙盒脚本语言),那么。net有LUA。. net框架的Silverlight版本也是沙盒的。

试试ReoScript,一个用c#实现的开源JavaScript解释器。

ReoScript使您的应用程序可以执行JavaScript。它有各种各样的扩展方法,如SetVariable,函数扩展,使用CLR类型,. net事件绑定等。

你好世界:

ScriptRunningMachine srm = new ScriptRunningMachine();
srm.Run(" alert('hello world!'); ");

下面是一个创建winform并显示它的脚本示例。

import System.Windows.Forms.*;        // import namespace

var f = new Form();                   // create form
f.click = function() { f.close(); };  // close when user clicked on form

f.show();                             // show 

现在有了ASP,这是可能的。Net MVC4 Razor视图引擎。代码是这样的:

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

// js snippet
<script type="text/javascript">
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 :)
</script>

Razor不仅适用于MVC4或其他web应用程序,你可以在离线桌面应用程序中使用它。

我刚刚尝试了RemObjects Script for . net。

它可以工作,尽管我不得不从JavaScript中使用一个静态工厂(var a= a . createa();)而不是var a=new a()语法。(ExposeType函数只暴露静态数据!) 没有太多的文档,源代码是用Delphi Prism编写的,这对我和RedGate Reflector来说是相当不寻常的。

所以:易于使用和设置,但对高级场景没有多大帮助。

另外,不得不安装一些东西,而不是仅仅将程序集放在一个目录中,这对我来说是一个负面影响……