YUI 3.0 Preview Release 1 推出了,並且是砍掉重練式的大更新,所以我當然要來測一下它的 Selector 速度囉!由於取用方式與其他 Library 有很大的不同,我花了一點時間才成功將它放進 SlickSpeed。
目前 YUI 官方給的範例、文件中都是採用這樣的方式
YUI().use('node', function(Y) {
Y.get('#demo').addClass('enabled');
});
yui-min.js 是一個 Loader ,使用時必須先用 YUI.use() 來建立 instance 並載入所需功能,然後才能使用 Y.get() 這種寫法。經過我研究原始碼後發現,如果只要用 Selector 的部份,則僅需載入 yui-base-min.js, dom-base-min.js 和 selector-min.js 三個檔案,然後使用 YUI().use("selector").Selector.query() ,就能選擇 HTML 物件。不過如果是載入 yui-min.js ,就不能用這種方法了。
測試結果:YUI 2 終於不再是最慢的 Selector ,因為現在多了 YUI 3 來當它的墊背… 囧rz
YUI 終於有了 Selector 套件,因此我又更新了我的 SlickSpeed 頁面,另外也順便把 base2, dojo, Ext JS, MooTools 都更新到最新版。由於現在 Library 數量已經太多,因此各 Library 我就只放最新版,不做新舊版本的比較。
Ext JS 在 Internet Explorer 7 中贏了 base2 ,但在 Firefox, Opera 中 base2 仍然大勝 Ext JS (其實跟上次的測試結果是一樣的)。 base2 目前的版本(1.0 beta 1)在 Safari/Win 中似乎有點問題,處理逗號時需要超久的時間(例如 div, div, div),因此 base2 在 Safari/Win 中就變成了最後一名,但若不看那幾個有問題的部份的話,它仍然是冠軍。以上四個瀏覽器都是 base2 和 Ext JS 在爭奪前兩名。
今天新增的成員 YUI Selector 的表現則不怎麼好看,在 Firefox, Opera 中它都是最後一名、在 Safari/Win 中為倒數第二名,在 Internet Explorer 7 中則是倒數第三名。
我今天發現在 Internet Explorer 7 中因為 Ext JS 出了個無關緊要的 Error ,卻導致 SlickSpeed 完全無法運作,才下定決心修好它。 Ext JS 2.0 應該有改寫一些地方,我測試到最後發現,竟然只要留下 Ext.DomQuery 這個 Class ,其他統統刪除就可以了,我記得之前在 2.0 alpha 1 時也這樣作過但是不行啊……
新版的Yahoo!奇摩字典有自動完成的功能,而 Firefox 自從 2.0 版本開始支援 OpenSearch ,其中也包含了自動完成功能。
依照 OpenSearch 的標準,搜尋引擎必須提供 JSON 格式的搜尋建議。但 Yahoo!奇摩字典似乎並未提供 JSON ,因此 Firefox 看不懂。為了解決這個小問題,我寫了一個 script 來轉換。將 Search Plugin 加上一行 <url type="application/x-suggestions+json" method="GET" template="http://experiment.bcse.info/yhdic_json/yhdic_json.php?p={searchTerms}"/> ,然後就能讓 Yahoo!奇摩字典 Search Plugin 支援自動完成功能了。
其實我自己是把檔案放在 Localhost ,因為這樣速度比較快,原始碼放在這裡。直接使用上面的線上版本的話,速度實在太慢,我只成功過一次 XD