XML 问题:MochiKit

 MochiKit 是一种有用的高端 JavaScript 库。MochiKit 主要受到 Python 和 Python 标准库提供的很多便利之处的启发,另外还缓解了浏览器版本之间的不一致性。其中的 MochiKit.DOM 尤其方便,能够以比原始 JavaScript 更友好的方式处理 DOM 对象。MochiKit.DOM 大部分都是针对 XHTML 文档定制的,如果与 MochiKit 和 Ajax 结合在一起,使用 XHTML 包装的微格式尤其方便。
简介

我最近的客座专栏作家 Dethe Elza 围绕着 Ajax、微格式和 Atom 提出了一些有趣的观点,我认为值得进一步探讨。首先,本文介绍了 Dethe 在其关于纤格式的文章中提到的一种很好的 ECMAScript 库(请参阅 参考资料):Bob Ippolito 的 MochiKit。MochiKit 对 JavaScript(从技术上说是 ECMAScript)的基本功能提供了一些出色的改进,多数源于对 Ippolito 的函数性编程的喜好,以及对 Python 丰富的标准库和灵活的结构的钟爱。使用 MochiKit 进行 JavaScript 编程,不少开发人员认为在很多方面就像是使用更加友好的 Python 语言。

为何使用 XML?

本专栏的读者知道,Ajax 中的 “X” 在很大程度上是因为 Web 浏览器中的 ECMAScript 实现或多或少支持 W3C 文档对象模型(DOM)规范。(根据具体的浏览器版本,“少” 可能超过 “多”。)这仅仅是一种美妙的说法,说 JavaScript 代码自动具有 XML 和 (X)HTML 文档解析器,并且有一套遍历、搜索和修改这类文档的抽象结构的 API 调用。看起来配合得非常自然,美中不足的是 DOM 是一种极其可怕的 API。虽然您可能争论说在 Java 这类功能强大、静态类型、高度结构化、小心封装的语言中 —— 我们程序员称之为拘谨、讲纪律的语言,保持了 W3C DOM 的形式,但是在 ECMAScript 这种比较敏捷的语言中没有理由这么做。

读者可能要问何必去管 XML 呢,既然 MochiKit.DOM 已经把工作简化了?无论如何,JSON 本质上仅仅是一种原生的 JavaScript 数据结构(有趣的是恰好也是有效的 Python),仍然比较弱小。不管怎么说,XML 还保留着一些优势。一方面就表示而言,XML 可以直接用 CSS2(级联样式表 2)设置样式。当然,可以将 JSON 转换成可设置样式的 DOM 对象,但本质上说只不过是又回到了 XML 或 (X)HTML。另一方面,和 JSON 相比,除了 ECMAScript 解释器本身以外有更多的工具支持 XML。数据可能来自——或者返回——使用 XML 定义结构化数据的服务器。有时候,这些 XML 遵循众所周知的、精心定义的模式,包括遵守那些已发布的标准。如果整个通信流中其他某些系统希望使用 SVG、OpenDocument、TEI 或者某种 ebXML 标准通信,就没有必要再额外增加一层 JSON 了。

简单的戏法

幸运的是,MochiKit.DOM 是根据 W3C DOM 的目标打造的,即为抽象文档结构提供一种 API,把 W3C DOM 中简单的东西变得更加简单,困难的东西变得不那么困难。MochiKit.DOM 真正的魔法在于它在方法调用过程中积极而灵活地把各种对象类型强制转换成正确的类型,包括在递归过程中。MochiKit 认为,只要明显正确的事情,就没有必要让程序员转圈子强制类型转换,或者调用方法来提取或变出需要的东西。此外,MochiKit 受 FP 启发而建立的部分应用程序也简化了程序员(以及程序)的工作,只要这样做最方便。

。。。。。。

                                                                                                                   点击此处查看全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值