设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

一切皆为 JavaScript

2013-11-5 10:58| 发布者: 红黑魂| 查看: 7950| 评论: 0|来自: CSDN

摘要: JavaScript起源于Netscape公司的LiveScript语言,这是一种基于对象和事件驱动的客户端脚本语言,最初的设计是为了检验HTML表单输入的正确性。早些年,JavaScript由于其复杂的文档对象模型(DOM)、糟糕的实现和调试 ...

编译为JavaScript后的问题

调试问题

由于是交叉编译,导致输出的代码很难被跟踪调试。

一些工具在编译的过程中会生成映射文件(将编译后的JavaScript代码映射到源语言),可以通过这些文件来进行调试。

性能问题

由于 JavaScript在浏览器中运行问题,本地代码编译为JavaScript后的执行速度可能会下降。

对于此类问题,Mozilla给出了一个解决方案—— asm.js(见《 asm.js:JavaScript的“汇编语言”》)。asm.js是一个JavaScript的一个严格的子集,提供了一个类似于C/C++虚拟机的抽象实现,包括一个可有效负载和存储的大型二进制堆、整型和浮点运算、高阶函数定义、函数指针等,可以被用来作为一个底层的、高效的编译器目标语言。

此外,还可以使用Mozilla开发的 JavaScript引擎OdinMonkey来获得更快的执行速度。开发者可以将编写的代码编译为JavaScript,然后手动编写为asm.js代码,当浏览器执行该程序时,OdinMonkey引擎会让程序的执行速度更接近于本地应用。Mozilla未来可能会开发一些工具(类似于 LLJS)来自动生成asm.js代码。

随着技术的发展,未来JavaScript也许会跑得和native C一样快。

一些演示

2012年,Mozilla曾推出一款Web版的第一人称射击游戏演示BananaBread,今年5月份,Mozilla宣布与Epic Games合作将虚幻引擎3(C/C++实现)移植到浏览器上,并发布了基于虚幻引擎3的HTML5演示游戏Epic Citadel,这些游戏都是基于WebGL、 Emscripten和高性能的JavaScript子集asm.js实现,重新定义了3D游戏在浏览器中运行的性能,展示了高端游戏也可以很容易地移植到JavaScript 和 WebGL平台,同时不失性能和画面效果。

 

Mozilla的另一款支持多人在线的HTML5 游戏—— BrowserQuest

随着HTML5新特性Full Screen API、Gamepad API和Mouse Lock API的完善,浏览器或将成为未来游戏的新战场。

增强版的JavaScript

JavaScript大量的扩展,在很大程度上弥补了JavaScript某些方面特性的不足。比如你可以使用如下这些工具或扩展来让JavaScript更强大。

安全性增强

  • ADsafe:提供了客户端静态验证功能和相关的API,增强第三方脚本的安全性
  • Caja:可以将传统的HTML和JavaScript转换为安全限制的JavaScpit格式
  • Dojo Secure:用于构建安全混搭应用的框架
  • FBJS:Facebook的 JavaScript工具,用于编写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进行互操作,我们将在以后的文章中详细介绍。

以上这些工具中,大部分都是开源项目,如果感兴趣,你也可以通过源码来了解这些语言之间进行转换的相关原理和技术。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部