最近看了很多关于Javascript、ECMAScript、Node.js等等一些资料,且随着Javascript的广泛使用,V8带动JS引擎效率的提升,不禁会问:未来的Javascript是什么样子?
以下是我的愚见:
Javascript随着Ajax的概念的兴起,从2005年至今确实火了一大把,十多年前布兰登·艾克(Brendan Eich)十天搞定了它,应该想不到它如此的有影响力。然而Javascript将来走向何方,也完全看它自己的造化。
CoffeeScript最近也很火,被称作JS的语法糖;也可以看看Move语言,同样也是编译为JS。使用CoffeeScript或者是Move来编写JS程序会更加方便,代码清晰易读,模块化组织(Move包含客户端的模块化组织),一些Ruby/Python的语法与思想精髓在这两个语法糖里若影若现,这代表什么?看看Node.js吧,遵循CommonJS的模块组织标准,真的,模块化在客户端也非常需要!
从脚本加载器LABjs到模块加载器RequireJS甚至到玉伯SeaJS到其推出的模块组织工具,说明了什么?我们需要一个JS模块的标准,不单单服务端,在客户端我们也需要,我们需要jquery,我们就require(“jquery.js”)进来,这是趋势,这也是玉伯想干的事情,SeaJS不是一个简单的模块加载器,最终是一个客户端模块化的解决方案或者是事实标准。
因此,从语言特性方面看,我们需要JS在语法上,代码组织上更加完善,足以挑起重担。Brendan Eich在文章中六次提到CoffeeScript,他喜欢它;ECMAScript6草稿中有为客户端模块化进行思考;这就是我们需要的,就是运行在浏览器上的类似Ruby/Python的JS,而JS不会逊色于它们。
有人觉得CoffeeScript/Move这类语言没用,还要编译为JS,效率低下。但是我得说,它们是烈士,是JS发展方向上的先行者。当然随着JS的成熟,它们的使命也就达成了。
实话说,Javascript的执行速度真是慢的可怜。在社区里,有人叫喊,我们在意且需要的是它的执行速度。是的,我们需要,Javascript未来有hold住大型程序、3D游戏的能力。
谷歌chrome一出江湖就左突右闯,直接拿下了20%以上的市场份额,冲上老二的宝座,版本号如脱缰的野马,早将IE抛之脑后,搞得Firefox也耐不住寂寞,生生追赶。随着chrome横空出世的还有其JS引擎V8,它的JS执行速度还在继续优化,各浏览器厂商自觉提高自家的JS效率。基于V8的server-side JS Node.js高并发测评文章,抢眼不少。
我敢说,JS的执行速度在将来会提高一百倍,毫无压力。
标准的不断完善,JS语言趋于完备,加上高效的执行速度,不管是在server端还是客户端,它hold住。
全屏与鼠标锁定API正在出台,地理位置API等等,JS有很多很酷的API,由于浏览器的跨平台,HTML的多变,html5/css3的支持,多变的程序和功能不在话下。
将来,会有更多更酷的API出现,重力感应,加速度等等更多LBS物联网特性都将经过浏览器传递为JS API。
跨平台是什么概念,Java称自己垮平台,一份代码,到处执行。JS跨平台么?当然,各种系统,很多设备都有浏览器,这就是跨平台。想想在HP WebOS夭折的Palm,我们可以用JS和HTML5开发程序。windows8说我们也支持Nodejs,我们也可以用HTML5开发本地程序。JS将来会无处不在,无所不能,有木有?
展望的同时,看看现在。有没有觉得关于JS的好书已经很久没有出版了,不是没有优秀的人。之前大家发现了JS,现在JS在等待,等待下一次涅磐。现在JavaScript需要的不是解决浏览器的兼容问题,因为已经有jQuery等等;我们还在网络速度、浏览器渲染速度、JS文件并行加载、延迟加载、模块化做斗争,我们需要标准来解决问题;我们需要更多的是在标准之上、效率至上扩展和实现。这些问题搞定了,就有好书了。
因此,未来的JS将更易用,更普遍,更多的表现和空间将由它开启,谁说它与Java不像呢?