我不知道我谈OOJS会不会有人理解我。今天恰巧看到一篇文章,回想起当初自己初次接触Ajax时的经历,颇有几分相似。于是回味。。。
我看到一篇文章,名为Show love to the object literal。这篇文章,恰巧复现了我当初刚接触Ajax时的尴尬。
去年10月当我刚刚接触Ajax的时候,我对Web开发领域的技术,应该说还是只知皮毛。尽管在大学四年里我一直从事Web开发,但由于使用的是ASP.NET之类的技术,而且自己不求甚解,所以,对真正隐藏在开发工具背后的东西知之甚少。
正如Show love to the object literal所谈到的,在突破了XHR,HTML DOM,XML DOM等各种障碍之后,当我打开开源JS库的源代码之后,我发现我见到了另一种完全不知其所云的JS代码。于是,在过去的几个月里,我尝试去了解这些看似古怪,却非常好用的东西,直到今天。
其实,根本原因并不如Show love to the object literal所讲。尽管,避免变量和方法冲突是其中原因之一。但是,那种风格的JS却有其正宗来历。JS支持JSON,那种风格的JS正是用JSON来定义一个类。JSON我们平日的开发很少用到。所以,一般来说,直到该方式JS代码的人比较少,如果他们没有阅读或者写过大量的JS代码的话。
当然,我们OOJS绝对不是这么简单的原因。
在Object-Oriented Javascript文章中,作者解释了比较正宗,也比较彻底的OOJS方式。这篇文章与上一篇文章的不同之处在于,Show love to the object literal里所关注的,只是语法的某些局部而已。而在这里,即Object-Oriented Javascript中,作者关注的是整个OO方式的JS。我们由局部上升到整体。
当然,OO绝对不是为了OO而OO。在另一篇文章里Object-Oriented Concepts,Object-Oriented Javascript的作者解释了为何需要OO。特别需要注意的最后一个章节,“Why use Object-Oriented programming?”。
到底为什么呢?
其实,单纯OO也没有太大作用。有兴趣的读者可以参考《Ajax in action》。本书的作者一直在试图在Ajax中应用设计模式。没有OO,如何设计模式。
可是,为什么要设计模式?
晕,怎么会有这么多问题?
你可以来看这么一个PPT,Hijax: Progressive Enhancement with Ajax。
当然,你可能发现有些文不对题。当然,这篇PPT确实有点不是很合题。但是,它所强调的,正是我所想强调的,也是很多人都强调的。那就是,应当谨慎对待Ajax应用。更多的时候,我们都是在考虑用户体验,比如,某个实效的URL,或者,某些提示的缺失。现在是时候了,让我们回头来考虑一下我们开发者自身的问题,即,如何组织大量的代码。
一个很好的偷懒的办法,就是汲取前人的经验。OO也好,设计模式也好,都是前人总结的经典。我们没理由放弃。
Coofucoo Zhang
Thursday, May 25, 2006