有没有像javascript编译器这样的东西?

时间:2011-08-04 00:44:59

标签: javascript compiler-construction linker

我想知道是否有可能编写一个javascript程序并将其编译并链接到可执行文件中?

如果是这样,是否可以创建一个libjs,它相当于c / c ++世界的libc?不会创建这样的东西使javascript成为一种完整的语言,然后可以直接在目标硬件上编译和运行?

如果你有一个javascript编译器,你不能用javascript写一个新的编译器吗?

3 个答案:

答案 0 :(得分:3)

是的,你可以写一个js编译器。不确定它会有多受欢迎:

  1. 这几天js引擎非常快,所以你的速度并不快。

  2. 这将是特定于平台的,或者您必须支持多个平台。不愉快。

  3. 它有什么用处?解释语言的优点在于它不需要编译。它缩短了开发周期和构建时间(曾经坐在C程序前面,不得不更改整个项目依赖的文件,必须运行并重新运行make,这需要花费几分钟来编译所有内容?)。< / p>

  4. 关于你的最后一点,你是对的。如果你有这些编译器之一,你确实可以在javascript中编写另一个编译器。

答案 1 :(得分:1)

阅读this ...并且不要错过评论。

Here也是一些选择。

答案 2 :(得分:0)

是的你有一些名为Google Closure Compiler的东西,但它不是传统意义上的编译器,它不会将javascript转换为机器代码,而是将javascript转换为javascript但高度优化的javascript。它实际上是一个优化编译器。编译器运行一些测试来检测像拼写错误这样的错误,就像工具JSLint一样。但谷歌建议在Closure库中编写的javascript上使用这个编译器。有关Closure Compiler的更多信息,请参阅this

但我不认为将客户端javascript编译为机器代码是一个好主意,因为机器代码是依赖于机器的,因此在您向客户端发送javascript之前,您必须检测其操作系统及其处理器体系结构。所以这将变成像linux上的firefox javascipt,windows上的firefox的javascipt,x86上的firefox的javascipt等等