prototype.js 是由 Sam Stephenson 写的一个 javascript 类库。这个构思奇妙,而且兼容标准的类库,能帮助你轻松建立有高度互动的 Web 2.0 特性的富客户端页面。
如果你最近尝试使用它,你大概了解到文档并不是作者的一个强项。和在我以前使用这个类库的不少开发者一样,一开始,我不得不一头扎进阅读 prototype.js 的源代码和实验它的功能中。我想,在我学习完它之后,把我学到的东西分享给大家是件不错的事。
同时,在本文中,我也将提供一个关于这个类库提供的 objects, classes, functions, extensions 这些东东的非官方参考。
在阅读这个文档时,熟悉 Ruby 的开发者将会注意到 Ruby 的一些内建类和本类库扩展实现之间非常相似。
$(): 根据 id 获取元素
$F(): 返回表单输入控件的值
$A(): 转化成数组对象
$H(): 转换成可枚举的 Hash 对象(与联合数组类似)
$R(): 构造 ObjectRange 对象
Try.these(): 尝试……直到成功返回
Ajax 对象
前面提到的共通方法非常好,但是面对它吧,它们不是最高级的那类东西。它们是吗?你很可能自己编写了这些甚至在你的脚本里面有类似功能的方法。但是这些方法只是冰山一角。
我很肯定你对 prototype.js 感兴趣的原因很可能是由于它的 AJAX 能力。所以让我们解释当你需要完成 AJAX 逻辑的时候,这个包如何让它更容易。
Ajax 对象是一个预定义对象,由这个包创建,为了封装和简化编写涉及 AJAX 功能的狡猾的代码。 这个对象包含一系列的封装 AJAX 逻辑的类。我们来看看其中几个类。
使用 Ajax.Request 类
如果你不使用任何的帮助程序包,你很可能编写了整个大量的代码来创建 XMLHttpRequest 对象并且异步的跟踪它的进程,然后解析响应并处理它。当你不需要支持多于一种类型的浏览器时你会感到非常的幸运。
使用 Ajax.Updater 类
如果你的服务器的另一端返回的信息已经是 HTML 了,那么使用这个程序包中 Ajax.Updater 类将使你的生活变得更加得容易。用它你只需提供哪一个元素需要被 AJAX 请求返回的 HTML 填充就可以了。
附件1 是prototype的js库
附件2 是prototype的中文API