avatar

Derek Zeng

A programmer

Web & javascript

by coderek

自从离开SSI之后一直都很忙,忙的连搞个博客的时间都没有。其实很想用ror架一个,但只是起了个头host在amazon上,很久都没有后续。后来想算了,现在这种忙状态也不知道会持续到什么时候,有时候又特别想写点东西,干脆就拣个现成的,用octopress架了个,希望这次的可以写久一点。

我一直以来给自己定的发展方向是网络应用,这方面的东西发展前途非常广。小到网站论坛,大到企业型应用都有涉及。网络应用的趋势是所有通讯都通过http/https传递,胖客户端。其实技术方面很多都是老的,只是重新整合,推广,就变成现在的web 2.0。很多新的技术,规范都是近几年发展出来的。比如说,HTML5,nodejs,这些东西技术上在20年前就可以实现了。但当时没有实际用途,所以就没人想到。现在是网络的时代,什么事情都在浏览器里发生。 浏览器或者html5, javascript规范的整合,大大加强了网络应用的可移植性,为其广泛的发展奠定了有力的基础。社交网络的流行,让男女老少对电脑网络的接受程度直线上升。今后的世界,就是网络的时间。网络应用的前途是光明的。

我觉得javascript是一门为网络而生的语言。

网络应用相比桌面应用最大的问题就是延迟。这个延迟是数据经过若干险阻(路由,防火墙,代理)从一个地点到达另一个地点的时间。这个时间是未知的,很难控制的。这是一个现实问题。如果强求同步的程序执行,做出来的东西注定是很laggy的。试想点击一个传送文件的按钮后,界面需要冷冻2分钟直到文件传送完毕,是一个很难受的体验。所以网络应用的前端一定要用一个异步的语言来完成。javascript很好的做到的这一点。虽然它的语法上有很多不好的地方,但它事件驱动的模式是长期主宰网页程序的原因。

如今,server-client模式正在慢慢发生着变化。一个客户端可以从很多服务端拿数据,一个服务端也可以同时是另一个服务端的客户端。一个终端客户可能跟网络的另一个机器通过浏览器建立socket连接,进而进行实时通讯。各种排列组合都成为可能。如此看来,javascript在传统的服务端也能有所作为。比如nodejs。expressjs是基于nodejs学习ror的一个框架,现在非常流行。另外,随着网络应用的复杂度的提升,比如一个实时多人画画的游戏,需要对每一个笔画进行同步,javascript的异步功能对此种问题是很好的解决方案。

当然,javascript也有很大的缺点。我认为最严重的一个就是对大型程序的管理没有一个原生的支持。有很多外部的库都试图解决这个问题,比如backbone, spine, requirejs等。另外,它没有什么官方库,没有像c++ algorithm, java各种容器。就算在网页这个javascript称王称霸的地方,它也得靠诸如jquery, prototype这类库来实现Dom的有效操作。

学好javascript不难,用好javascript才是难点。怎样用它开发大型的项目是一个好的网络程序远必须掌握的技术,这里包含了多种知识。作为一个写了一年多javascript的人,我任重而道远。

(End of article)