A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄炳期 金牌黑马   /  2013-11-5 08:51  /  1375 人查看  /  2 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

将.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一样快。
增强版的JavaScriptJavaScript大量的扩展,在很大程度上弥补了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进行互操作,我们将在以后的文章中详细介绍。

2 个回复

倒序浏览
这个不错。希望以后多交流,呵呵
回复 使用道具 举报
荣晓鹤 发表于 2013-11-9 18:14
这个不错。希望以后多交流,呵呵

:lol必须得!加油哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马