快速创建Dojo Widget的方法

快速创建Dojo Widget的方法

Dojo 是目前最热门也是最有前途的 AJAX 框架之一,最近在项目中的客户端用了大量的 Dojo Widget 来制作界面,用起来很方便,但是性能成为了最大的问题,上千个 widget 需要 1,20 分钟才能完全载入,完全的不能接受。Dojo 的新闻组有人提到 6,70 个以上时速度问题就相当严重了。

读了代码后发现,主要的时间都花在对 template 的解析上了,最大的问题是,每次创建一个实例都要解析一次,例如创建1000个 IntegerTextbox 实例,相同的一段HTML代码就要被解析1000次,做了大量的重复工作。

于 是就试着通过使用类似 clone 的方法来创建 Widget,DOM 对象的 clone 是浏览器提供的,速度很快,简单的 Javascript 对象的 clone 也很快。最终的结果很让人满意,同样的页面只需要 2,30 秒钟就够了。这种方法有一定的限制,对于dojoType的使用方法不支持,只能用程序生成的方式,程序也有一些不同的地方。有时间的时候会试着在 Dojo 中加入对 template 解析结果的 cache,应该就可以提供更好的兼容性了,也欢迎有兴趣的 Dojo 使用者一起讨论。

具体的代码清参考我的英文页面 http://yjpark.spaces.live.com/blog/cns!DC0EB8C9CA222079!151.entry