JavaScript是互联网时代编程语言的霸主,统领浏览器至今已有许多年头,而这股风潮很可能随着HTML 5 的兴起而愈演愈烈。如今JavaScript更是在Node.js的帮助下进军服务器编程领域。“单线程”和“无阻塞”是JavaScript的天性,因此任何需要“耗时”的操作,例如等待、网络通信、磁盘IO都只能提供“异步”的编程接口。尽管这对服务器的伸缩性和客户端的响应能力都大有脾益,但是异步接口在使用上要比传统的线性编程困难许多,因此也诞生了如jQuery Deferred这样的辅助类库。Jscex的主要目的也是简化异步编程,但它使用了一种与传统辅助类库截然不同的方式,尽可能地将异步编程体验带领到新的高度。
目前最热门的话题:Node.js 是服务器端的 JavaScript 运行环境,它具有无阻塞(non-blocking)和事件驱动(event-driven)等的特色,Node.js 采用V8 引擎,同样,Node.js 实现了类似Apache 和 nginx 的web 服务,让你可以通过它来搭建基于 JavaScript 的WebApp。
Node.js是被设计用来解决服务器端阻塞,对于高并发,I/O 密集行的网络应用中,一方面进程很长时间处于等待状态,另一方面为了应付新的请求不断的增加新的进程.这样的浪费会导致系统支持QPS 远远小于后端数据服务能够支撑的QPS,成为了系统的瓶颈。这个时候可以利用javaScript的异步事件调度机制去完成这个任务。
使用Node.js会带来的问题,使用javaScript时会建立很多变量和对象,这些都需要内存的占用,在整个函数中运行时是不会被释放,即使它没有任何意义。JS中的许多语法和使用都可能对性能和安全带来忧患。针对以上问题,解决的方式通过给JS开发静态编译器在代码发布前自动优化我们的代码。
静态编译是如今JavaScript 技术领域的又一个热点,我们都知道JavaScript 是解释型脚本语言,在运行时自动编译。但是运行时编译只是将代码转为机器码执行,却并未覆盖传统编译型语言在编译阶段所做的任务。比如,语法检查,接口校验,全局性能优化等等。
最常见的JavaScript 静态编译就是脚本压缩工具,在代码发布到线上之前,我们通过各种压
缩工具,将代码压缩,达到减少网络传输量的问题。而在这个时间点,已经有越来越多的事情可做,比如:Google 利用ClouserComplier 提供的系列编译指令,让JavaScript 更好的实现OO 编程。也有GWT,CoffeeScript 这样的项目,将其他语言编译为JavaScript。在淘宝我们在代码静态编译阶段来解决因JavaScript 细粒度模块化改造引入各种性能问题,也用来对第三方提供JavaScript 代码进行一定的安全检查。Google的Closure Compiler便是这样一个东西。