我正在寻找一种写出javascript的高级语言。换句话说,这种语言与javascript的关系类似于C ++与汇编代码的关系。
这种更高级语言的要求是类型安全,易于重构,能够有类,继承等(像java / C#/ vb.net一样)。
优点是我可以使用这种更高级别的语言进行编码,而无需依赖“hacks”将继承带到javascript。此外,我不必进行任何运行时类型/鸭子检查,因为更高级别的语言将强加类型安全限制,生成的javascript将“完成工作”。
与使用汇编编码相比,使用C ++进行编码时,我们可以获得的任何优势都将带来额外的优势。
我实际上会尝试自己编写这种更高级别的语言,但是它的工作太多了,我想知道是否有人确实已经做过类似的事情。
答案 0 :(得分:4)
CoffeeScripts的目标不是将现有的高级语言编译成JavaScript,而是将新语言创建为“比JavaScript更好的JavaScript”。
这类似于使用C ++作为“比C更好的C”。
当然,由于它更接近JavaScript,它完全支持所有 JavaScript功能。编译器也是用CoffeeScript(JavaScript)本身编写的。
答案 1 :(得分:3)
有Script#,它将C#代码编译成JavaScript。但不确定它可能有任何限制。还有jsc,它通过反编译将.NET程序集转换为JavaScript。
AFK没有编译以利用ECMAScript第5版中的新功能。
答案 2 :(得分:2)
Google Web Toolkit (GWT) Java代码作为更广泛范围的合作伙伴。以下是相邻链接的摘录:
GWT SDK提供了一组核心 Java API和小部件。这些允许你 用Java编写AJAX应用程序 然后将源代码编译为高度 经过优化的 JavaScript 所有浏览器,包括移动版 适用于Android和iPhone的浏览器。
您当然可以使用Google Closure Compiler从JavaScript本身编译JavaScript。
另请查看Scott Mitchell's blog article关于Script#
的{{3}}但是,正如@Andy E所说 - 没有任何声称可以为ECMAScript5工作
答案 3 :(得分:1)
您应该考虑结合LLVM查看emscripten。它允许您将大量语言(包括C和C ++)编译为LLVM bitcode,然后编译为JavaScript。这来自their projects page:
Emscripten将LLVM bitcode编译成JavaScript,这样就可以将C和C ++源代码编译为JavaScript(首先使用Clang将其编译为LLVM bitcode),这可以在Web上运行。 Emscripten已被用于移植大型现有的C和C ++代码库,例如Python(标准CPython实现),Bullet物理引擎和eSpeak语音合成器等等。
使用这种技术的一个特别神奇的端口是box2d.js项目,该项目采用了很棒的box2d库并将其转换为this amazing demo。