【问题标题】:Javascript as a managed dynamic .net languageJavascript 作为托管的动态 .net 语言
【发布时间】:2012-01-21 10:58:54
【问题描述】:

Visual Studio 语言可扩展性

有谁知道是否有一个开源(或付费)项目使用 托管 Javascript 作为服务器端 .net 语言扩展 Visual Studio,因此它被编译为 IL 并作为日常 .net 执行申请?

我们已经习惯了 Javascript 的动态特性,而且由于 C# 4.0 还支持 dynamic,我看不出 Javascript 不能在 Visual Studio 中用作服务器端 .net 语言的任何特殊原因。我相信很多人会很乐意使用它。尽管由于两端的语言相同,它在 Asp.net 应用程序中可能会让人感到困惑。但这可以通过文件扩展名通过文件扩展名来解决。 服务器端文件不应使用 *.js 扩展名(客户端 JavaScript),而应使用类似 .ssjs(服务器端 JavaScript)的扩展名。

它实际上会让它像一个 node.js 应用程序,但代码行数更少,手头有完整的 .net 功能。

那不是很好吗?

可以在互联网上找到什么

  • 托管 JScript - 这似乎正是我所追求的,但有几个消息来源说这是一个死项目;因为它是 DLR(动态语言运行时)的实验;
  • MyJScript - 只是一个关于如何编写 DLR 编译器的教程,巧合的是使用 Javascript/JScript 作为一种语言
  • JScript.NET - 这并不完全像 Javascript(它扩展了我认为不好的原始语法),而且它还是 seems to be a long dead project(根据 @grapeot)。

【问题讨论】:

    标签: javascript .net visual-studio programming-languages extensibility


    【解决方案1】:

    你知道IronJS吗?

    JScript.NET?

    他们可能正在尝试这样做。

    另一方面,人们可能会问为什么 J#.NET 没有成功。它旨在使了解 Java 的人更容易过渡到 .NET,但显然他们不想这样做。也许是因为 c# 太相似了,但考虑到你提到的动态的存在,这可能也适用于 c# 和 Javascript。

    【讨论】:

    • +1 表示最后一段。可能是因为它无法流行,因为像 C# 这样的静态语言在 .net 中更具触感......我似乎无法设想一个没有任何特殊构造的纯 Javascript 版本,它会使用定义的静态 .net类型。包括泛型。
    • IronJS 似乎与 node.js 有某种关系?还是徽标相似度纯属巧合?
    • 请参阅 groups.google.com/forum/#!topic/nodejs/A8l89dKKYxE 以了解有关该问题的讨论。然而,node.js 是一个应用服务器,IronJS 是一个运行时(而不是 node.js 使用的那个)。
    • 我不认为你在 J#/C# 和 C#/Javascript 之间的平行是正确的。即使引入了动态,C# 也与 Javascript 大不相同,你不觉得吗?
    • 当然,C# 和 Javascript 与 C# 和 J# 有很大的不同。我只是在寻找迄今为止没有基于 Javascript 的 .NET 替代方案成功的原因。 Javascript 中的一些结构可能更优雅或更简洁(而且更脏),但我相信 Javascript.NET 实现比语言本身更好的理由是很多人都非常了解它(与 node.js 的原因相同)已创建)。
    【解决方案2】:

    您可能对 Jscript.NET [MSDN] [Wiki] 感兴趣。请注意,它是在 2000 年左右首次推出的。有些人声称微软在 .NET 4 中有一个改进的编译器,而有些人声称它已停止使用,正如 this post 所讨论的那样。

    在 CLR 的开源实现 Mono 中,它们支持 JavaScript 作为工作语言,称为 IronJS。 [ref]

    【讨论】:

    • 我也相信这是一个死项目......不幸的是。而且它实际上也不是Javascript...它支持class等关键字。也不支持泛型(我不知道它们应该如何,因为Javasript本身是动态的,所以不应该使用静态类型无论如何。dynamicexpando 应该足以转换为具体的 CLR 类。
    【解决方案3】:

    微软推出了 TypeScript,它可以编译成 Javascript。但是,Typescript 或 Javascript 应用程序(目前)还不能部署在 .NET 运行时上。 Javascript 和 Smalltalk 的一个关键语言特性是块闭包(一种灵活的匿名函数,在方法中内联定义)。 .NET DLR 不支持此功能。有一些变通方法,但不是一个完整的框架来在 .NET 上播放 Javascript(或编译为 Javascript 的 Amber Smalltalk)应用程序

    Microsoft 聘请了 Smalltalk 虚拟机专家 (D. Simmons) 为他们的 IE Javascript VM 工作。我希望专业知识能够渗透到 .NET

    一定有人在处理它?将 Amber Smalltalk 应用程序部署在 .NET 上会很棒

    【讨论】:

    • 我发这个已经三年了。尽管微软在开源 .NET 并使其跨平台方面取得了长足的进步,但我们仍然需要在 .NET 中拥有真正的动态语言支持功能。
    猜你喜欢
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多