Entries Tagged ‘YUI3’:

JavaScript 框架的 DOM 操作性能

克军提醒,在博客上也搭建了个 TaskSpeed:

http://lifesinger.org/labs/taskspeed/

将感兴趣的框架都更新到最新版本。修改了部分 tests.js, 以保证主流浏览器下所有用例都能得到正确结果。

特别修改了 YUI 2.8 的测试文件:yui-tests.js. 原测试文件大量使用YAHOO.util.Selector这个并不推荐使用的类,不符合 YUI 2 的实际使用情况(一般仅使用 yahoo-dom-event, get, anim 等 utilities)。

从测试结果可以看出:

前三甲是 Dojo 1.4, jQuery 1.4, YUI 2.8
MooTools 在 Safari 下表现优异,其它浏览器下有些惨淡。
Prototype 老矣,尚能饭否?
YUI 3 中规中矩,不出色,但也不糟糕。

Tags: , , , , ,

YUI3 DOM Manipulation Performance Test

测试场景:给 table 的 150 个 tr 添加style="color: #ccc", 重复 20 次。
测试页面:dom-manipulation.html

点击每个测试按钮前,都重新启动浏览器。手工记录 10 * 4 * 4 次无明显偏差的数据,取平均值,可得到以下统计结果:
dom manipulation spent time comparison chart

其它 DOM 操作结果类似。

结论:当页面较复杂,DOM 操作较多时,YUI3 会明显增加脚本执行时间,存在性能隐患。
阅读全文 »

Tags: , , ,

YUI 3 学习笔记:component infrastructure

pros

良好的封装和一致性,让我想起 Ext 的口号:A foundation you can build on.
YUI 2 给我的感觉是工具集,YUI 3 则真的让我觉得是框架,有如 CakePHP 或是 Spring 曾经给我的感觉。
YUI 3 搭好了建筑框架,约定好了如何放置砖瓦,我们只要按照建筑的轮廓和既定的约定去写代码即可。
框架的感觉,一个真正框架的感觉。如此久远,又如此熟悉和亲切,如此水落花开。

cons

框架,意味着有一套自己的“语法”和约定。
YUI 2 的年代,我们能像写 JavaScript 一样写 JavaScript, 无需去记忆太多附加的约定。
YUI 3 的组件架构,则期待我们能按照一套既定的约定去写代码。
约定是种好习惯,但是否考虑了太多而丧失了简单?
依旧是 JavaScript 代码,但又不是 JavaScript 代码了。
保持简单是一种美,需要很大的勇气与坚持。
易用,一致性,工业化,却是一种社会需求。
一个框架,成则万人追捧,败则无人评说。一切需要时间去检验。

bless

这是 YUI 3 源码学习笔记系列的最后一篇。
剩下的 Utilities, Plugins, Extensions, Widgets ( 这是 YUI 3 的 4 种 Components ),等以后用到时,再去学习。

最后,祝 YUI 3 一路好运。

Tags: , ,

YUI 3 学习笔记:node

node 包括 7 个子模块:

  1. node-base, node-style 和 node-screen 分别封装了 dom-base, dom-style, dom-screen.
  2. node-event-delegate 和 node-event-simulate 为 Node 提供了代理和模拟事件的能力。
  3. node-aria 是挺有意思的一个子模块。非常简单的几行代码,使得 Node 可以便捷地支持 WAI-ARIA 定义的成员。(感慨国外对残障人士的关心)
  4. nodelist 模块,提供批处理能力。

node 还有两个 plugins: node-focusmanager 和 node-menunav.

阅读细节代码时,一个很深的印象是代码的分离技巧。比如Y.Node.ATTRS, 简单约定和对象组合,让代码很灵活,各个子模块能方便地解耦。具体细节将在下一期学习笔记 ( component framework ) 中挖掘。

快乐学习,努力分享,欢迎讨论。

Tags:

YUI 3 学习笔记:event

event 模块包括 event, event-custom, event-simulate 三部分,类图如下:

阅读全文 »

Tags: ,

Page 1 of 3123