有哪些用于 .NET 的 JavaScript 实现?

13

这是一个带有自己答案的问题,可能适合CW。

首先,什么是良好的JS实现的特点(在我看来)

  • 完整性。它必须能够处理所有的JS结构。测试它是否能编译像jquery、prototype、underscore等东西是一个很好的方法(当然,许多这些东西由于需要DOM而无法执行)
  • 稳定性。没有崩溃,或者有时工作,有时不工作
  • 快速
  • Silverlight支持
  • 易于嵌入。我希望在托管环境和JS之间有一个简单的接口,并能够正常工作

我必须说我对此感到非常恼火。常见问题解答明确表示,提出问题并自己回答是可以的,事实上是受到鼓励的。它被移动到我永远找不到的地方,然后从那里被删除了。 - pm100
JScript.NET怎么样?为什么它不在列表中? - Raynos
@Raynos - 我在寻找可嵌入式脚本实现,而不是静态编译的实现。此外,jscript.net 似乎已经死了,不是吗? - pm100
有一个带有重大扩展的版本10。您可能会发现,为Windows 8进行js/html5开发将运行JScript 10.0。它目前处于空闲状态,但如果我们在win8开发中使用JScript,则它可能开始变得更加流行。 - Raynos
问答模式要求自我回答必须是答案。在问题的文本中放置一个“答案”是不好的。 - dmckee --- ex-moderator kitten
显示剩余2条评论
2个回答

15

我了解几种实现方式

首先是Ironjs。这是纯F#。这是我看到的第一个真正的大型项目,对F#来说是一个真正的启示。即使你不感兴趣JavaScript,它也是F#的一个很好的学习工具。它的评分如何:

  • 完整:是的
  • 稳定:是的
  • 快速:声称非常快,我没有测量过。它是一个解释器。
  • SL:否(在GitHub上有一个未完成的工作项)
  • 嵌入:很难来回传递事物。无法从JS代码访问.net库

Jurassic。这表明它编译为IL,即不解释

  • 完整:似乎如此
  • 稳定。不能说,测试不够
  • 快速。声称是因为它不是解释器。然而,它编译为IL的事实强烈表明它会泄漏代码空间。即运行不同脚本的服务器最终将填满。
    • SL:是的
  • 嵌入:看起来和IronJS差不多。

Jint。这是一个Antlr前端解释器(有趣的是,ironjs曾经使用antlr但出于性能原因放弃并进行了自己的解析,并且似乎得到了巨大的提升)

  • 完整:我发现有一些东西缺失,但已经修复了,但仍有点令人担忧
  • 稳定性:有一些不太稳定的地方
  • 速度:可以接受
  • SL(Silverlight):不支持
  • 嵌入:非常好。它能够很好地工作,我可以在JS中实例化.NET类,并自由地传递数据。
  • Javascript.Net。这是Google V8引擎的托管封装。我没有尝试过它,所以只能说一下官网上的信息。

    • 完整性:?
    • 稳定性:?
    • 速度:考虑到V8的快速性,我希望它会很快
    • SL(Silverlight):不支持
    • 嵌入:?

    最终我使用了Jint,因为它具有很好的嵌入功能,但我真的需要SL支持(我有两个需要嵌入JS的项目,第二个是一个SL项目),我不想使用两个不同的引擎,所以必须做出一些改变。

    有人有任何经验或其他实现吗?


0

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