首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了Objective-J之外,还有其他语言可以在浏览器中“编译”成JavaScript吗?

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

Stack Overflow用户
提问于 2010-10-09 09:27:56
回答 4查看 919关注 0票数 6

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-07 21:01:15

Stack Overflow用户

发布于 2010-10-09 10:18:06

CoffeeScript编译器将CoffeeScript编译成ECMAScript。由于CoffeeScript编译器本身是用CoffeeScript编写的,因此它可以将自身编译为ECMAScript,从而在浏览器中运行。标准CoffeeScript编译器中已经包含了支持<script type='text/coffeescript'>元素所需的零碎内容。

一般来说,任何语言都可以编译成ECMAScript,您所需要的只是一个编译器。而且,因为任何语言都可以编译成ECMAScript,所以任何编译器都可以编译成ECMAScript,您所需要的就是编写编译器所用语言的编译器。

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

例如,有这样一个人,他编写C compilers which target high-level languages只是为了好玩。他有一个可以把C编译成Java、Perl、Common Lisp、Lua或ECMAScript的编译器。因此,您可以使用该编译器将任何其他用C编写的编译器编译为ECMAScript。而且大多数语言都有一些用C编写的编译器。

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

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

  1. reuse
  2. safety
  3. expressivity

如果您只是想重用用不同语言编写的现有代码(或用不同语言编写的现有知识),那么在客户机上编译/解释没有多大意义。无论如何,代码或编码器都不希望能够使用<script>元素。这个类别包括像GWTVolta这样的东西。

如果(类型)安全是你的目标,那么在客户机上编译/解释根本不起作用:如果你不控制编译器,你怎么保证安全性呢?这就是为什么Ur/WebLinksFlapjaxHaxeCaja等在服务器上编译代码的原因。它们通过静态类型或紧密集成或两者兼而有之来保证安全性。(所谓紧密集成,我的意思是后端、前端和应用程序紧密相连,例如,只需指定一次数据结构,然后从该单一来源生成相应的SQL、ECMAScript和HTML表单,以确保它们都匹配。这需要在服务器上进行处理的原因应该是显而易见的。)

然而,那些关注表现力的人希望被用作ECMAScript的替代品,即在<script>元素中,因此它们通常附带在客户机上运行的解释器和/或编译器。CoffeeScript、Objective-JClamato都属于这一类。

票数 14
EN

Stack Overflow用户

发布于 2010-10-09 09:30:44

这里有一个将类似ruby的语言编译成javascript的例子--编译可以在浏览器中完成。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3895322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档