黑马程序员技术交流社区
标题:
一切皆为javascript(二)
[打印本页]
作者:
黄炳期
时间:
2013-11-5 08:51
标题:
一切皆为javascript(二)
将.NET代码编译为JavaScript
你可以使用如下工具将C#、F#以及其他.NET代码编译为JavaScript代码。
Apps in Motion
:允许使用C#来构建可以运行在任何设备上的Web应用程序
Blade
:一个Visual Studio扩展,可以将C#代码转换为JavaScript
FunScript
:可通过TypeScript的类型提供器将F#代码转换为JavaScript或JQuery代码
jsc
:可将.NET程序重新编译为JavaScript、ActionScript、PHP或Java程序
JSIL
:可将MSIL(.NET字节码)转换为 [url=]JavaScript[/url]
NemerleWeb
:可将Nemerle语言(微软的多范型语言)编译为JavaScript
Pit
:可将F#代码编译为Javascript
Prefix
(开发中):可将C#代码编译为Javascript
Saltarelle
:可将C#代码编译为Javascript
SharpKit
(商业工具):可将C#代码编译为Javascript
Script#
: [url=]可将[/url]C#代码编译为Javascript
WebSharper
:可将F#代码编译为Javascript.
将Scala代码编译为JavaScript
你可以使用如下工具将Scala代码编译为JavaScript代码。
Scala.js
:一款将Scala编译为JavaScript的编译器,支持全部Scala语言特性,允许开发者用Scala开发从前端到后端的Web应用
js-scala
:在Scala中将JavaScript作为嵌入式的DSL语言
Scala+GWT
:通过GWT工具链将Scala代码编译为JavaScript语言
其他编译工具
Go2js
:可以将Go代码行到行地编译为JavaScript代码
Perlito
:可以将Perl 5/6代码编译为JavaScript、Ruby、SBCL和Go语言代码。
编译为JavaScript后的问题
调试问题
由于是交叉编译,导致输出的代码很难被跟踪调试。
一些工具在编译的过程中会生成映射文件(将编译后的JavaScript代码映射到源语言),可以通过这些文件来进行调试。
性能问题
由于 JavaScript在浏览器中运行问题,本地代码编译为JavaScript后的执行速度可能会下降。
对于此类问题,Mozilla给出了一个解决方案—— [url=]asm.js[/url]。asm.js是一个JavaScript的一个严格的子集,提供了一个类似于C/C++虚拟机的抽象实现,包括一个可有效负载和存储的大型二进制堆、整型和浮点运算、高阶函数定义、函数指针等,可以被用来作为一个底层的、高效的编译器目标语言。
此外,还可以使用Mozilla开发的JavaScript引擎OdinMonkey来获得更快的执行速度。开发者可以将编写的代码编译为JavaScript,然后手动编写为asm.js代码,当浏览器执行该程序时,OdinMonkey引擎会让程序的执行速度更接近于本地应用。Mozilla未来可能会开发一些工具(类似于
LLJS
)来自动生成asm.js代码。
随着技术的发展,未来JavaScript也许会跑得和native C一样快。
增强版的JavaScript
JavaScript大量的扩展,在很大程度上弥补了JavaScript某些方面特性的不足。比如你可以使用如下这些工具或扩展来让JavaScript更强大。
安全性增强
ADsafe
:提供了客户端静态验证功能和相关的API,增强第三方脚本的安全性
Caja
:可以将传统的HTML和JavaScript转换为安全限制的JavaScpit格式
Dojo Secure
:用于构建安全混搭应用的框架
FBJS
:Facebook的 [url=]JavaScript[/url]工具,用于编写Facebook小插件
Jacaranda
:支持对象的静态验证器
Gatekeeper
:一个JavaScript密码保护脚本
Microsoft Web Sandbox
:通过隔离来保证安全性
静态类型特性
JSX
:一个更快、更安全、更易用的JavaScript替代品
Elm
:类型安全的函数式语言,可编译为HTML、CSS和JavaScript.
Lambdascript
:一个强类型的纯函数式原型语言
MileScript
:一个类似于C#和Java的强类型语言,可编译为JS
SafeJS
:为JavaScript增加了语法糖
Mascara
:为JavaScript增加了强大的功能,比如类、命名空间和类型检查等
Roy
:函数式语言,与JavaScript语义保持接近,拥有类型推断、结构类型、sum类型、模式匹配等
JavaScript的衍生品
JavaScript如今在Web开发界的地位无法撼动,但是仍不断有一些新的语言出现,希望能够通过提供更强大、更完善、更优雅的特性来代替JavaScript。
CoffeeScript
: CoffeeScript是一个使用纯Ruby编写的编程语言,只使用了JavaScript的“精髓”,抛弃了原来JavaScript晦涩、容易出问题的部分,如全局变量声明、with等。并提供了很多语法糖,让代码更优雅可读。
Dart
:Google推出的一种基于类的可选类型化编程语言,可以在原生虚拟机中直接运行,也可以用编译器将Dart代码翻译成 JavaScript代码。
TypeScript
:JavaScript的一个超集,添加了可选的静态类型和基于类的面向对象编程。
ClojureScript
:由Clojure的创建者Rich Hickey推出,目标是“做Javascript所能做到的事情”,代码可编译为Javascript。
IcedCoffeeScript
: Coffeescript语言的扩展集,添加了2个关键字await和defer,为浏览器和服务器两者提供了强大的异步控制功能。
LiveScript
:
Coco
的一个分支,是CoffeeScript的间接子集,并在面向对象和命令式编程方面进行了诸多改进,代码可以编译成JavaScript。
Kaffeine
:JavaScript语法的扩展,与JavaScript非常类似,代码可以直接编译成JavaScript。
更多工具可参见:
http://altjs.org/
最后
几乎所有主流的语言都可以编译为JavaScript,进而能够在所有平台上的浏览器中执行,这也体现了JavaScript的强大性和在Web开发中的重要性。此外,互联网中还存在大量的工具,使得这些语言可以与 JavaScript进行互操作,我们将在以后的文章中详细介绍。
作者:
荣晓鹤
时间:
2013-11-9 18:14
这个不错。希望以后多交流,呵呵
作者:
黄炳期
时间:
2013-11-10 10:33
荣晓鹤 发表于 2013-11-9 18:14
这个不错。希望以后多交流,呵呵
:lol必须得!加油哈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2