代码之家  ›  专栏  ›  技术社区  ›  avernet

除了Objective-J,还有其他语言可以在浏览器中“编译”成JavaScript吗?

  •  6
  • avernet  · 技术社区  · 14 年前

    Objective-J直接在浏览器上编译/转换为JavaScript。(这与在服务器上这样做形成对比,就像GWT在Java上那样。)除了Objective-J之外,是否有其他语言实现过这种方法?

    4 回复  |  直到 14 年前
        1
  •  7
  •   clyfe    14 年前
        2
  •  14
  •   Gama11 zzapper    5 年前

    这个 CoffeeScript 编译器将CoffeeScript编译为ECMAScript。由于CoffeeScript编译器本身是用CoffeeScript编写的,所以它可以将自己编译为ECMAScript,从而在浏览器中运行。支撑所需的零件 <script type='text/coffeescript'> 元素已经包含在标准CoffeeScript编译器中。

    一般来说, 任何 语言可以编译成ECMAScript,只需要一个编译器。而且,自从 任何 语言可以编译为ECMAScript,任何 编译程序 可以编译为ECMAScript,您只需要一个该语言的编译器 那个 编译器已写入。

    这导致在浏览器中编译语言的可能性组合爆炸。

    例如,有个家伙写 C compilers which target high-level languages 为了好玩。他有一个编译器,可以将C编译成Java、Perl、Common Lisp、Lua或ECMAScript。所以,你可以用 那个 编译任何 其他 用C编写的编译器。而且大多数语言都有一些用C语言编写的编译器。

    Clue是用C编写的。Clue将C编译成ECMAScript。因此,可以使用Clue将Clue编译为ECMAScript。然后,您可以在浏览器中运行Clue,将C动态编译为ECMAScript。 <script type='text/c'> ,有人吗?(有趣的想法:node.js节点是用C写的。嗯……)

    更重要的是:编译为ECMAScript通常有三个原因:

    1. 重新使用
    2. safety
    3. 表现力

    如果只想重用用不同语言编写的现有代码(或用不同语言编写的现有knowlwedge),那么在客户机上编译/解释就没有多大意义。代码或代码编写者不希望能够使用 <script> 不管怎样。这一类包括 GWT Volta .

    如果(类型-)安全是您的目标,那么在客户机上编译/解释根本不起作用:如果不控制编译器,您如何保证安全?这就是为什么 Ur/Web , Links , Flapjax , Haxe , Caja 这样就可以在服务器上编译代码了。它们通过静态类型或紧密集成或两者兼而有之来保证安全性。(通过紧密集成,我的意思是后端、前端和应用程序紧密相连,例如通过指定数据结构 一旦 然后从单一源生成相应的SQL、ECMAScript和HTML表单,以确保它们都匹配。很明显,这需要在服务器上进行处理。)

    然而,那些专注于表现性的人,希望被用作ECMAScript的替代品,即内部 <脚本> 元素,因此它们通常附带在客户端上运行的解释器和/或编译器。咖啡脚本, Objective-J Clamato 属于这一类。

        3
  •  4
  •   Michael Anderson    14 年前

    下面是一个将类似于ruby的语言编译成javascript的例子,编译可以在浏览器中完成。

    http://jashkenas.github.com/coffee-script/

        4
  •  0
  •   Radek    11 年前

    除了这些列表之外,这里还有一个索引: http://altjs.org/ 其中包括:

    • 新语言
    • JavaScript增强
    • 端口(Java、C、Ruby等)

    还有更多