(轉(zhuǎn)載)
2007年6月項(xiàng)目準(zhǔn)備開(kāi)始了,剛來(lái)到一個(gè)新的項(xiàng)目組,什么都是新的,除了我自己。
需要一個(gè)新的框架來(lái)開(kāi)發(fā)項(xiàng)目,香港的同事決定使用Dojo,DWR, 我開(kāi)始學(xué)習(xí)使用dojo,時(shí)間很短,但是我還是基本上熟悉了dojo的基本控件和架構(gòu)。在此基礎(chǔ)上搭建起了項(xiàng)目的基本框架。這是一個(gè)單頁(yè)面,基于ajax和dojo widget的系統(tǒng),一切都那么的新奇,又充滿挑戰(zhàn),但是既然dojo有這么多后臺(tái),又有香港同事的推薦,我顯得自信滿滿。
框架搭建的同事,也開(kāi)始后了緊鑼密鼓的招兵買(mǎi)馬,一起都像是從零開(kāi)始。陸陸續(xù)續(xù),招了5個(gè)程序員和一個(gè)測(cè)試員。開(kāi)始了整個(gè)項(xiàng)目的快速開(kāi)發(fā),由于需求由香港負(fù)責(zé),而且需求做的比較細(xì)致,基本上問(wèn)題很少。Dojo 卻是麻煩不斷。
首先的一個(gè)壞消息是當(dāng)我們做完了幾乎全部300個(gè)頁(yè)面的時(shí)候,dojo宣布0.43不在得到支持,取而代之是完全不同的dojo0.9。 而且dojo0.9 還不是穩(wěn)定的版本,問(wèn)題多多,讓我們騎虎難下,最后還是決定按兵不動(dòng)。 隨之而來(lái),是dojo1.0,dojo1.1 的陸續(xù)發(fā)布,但是一直都無(wú)法讓我看到希望的曙光。 與之相對(duì)的是ext在國(guó)內(nèi)的廣泛使用和熱烈追捧。
Dojo 的控件有很多奇怪的地方,日期選擇控件的行為非常怪異,與國(guó)內(nèi)的使用習(xí)慣很不相同。而且樣式極其丑陋,當(dāng)字體放大縮小的時(shí)候更是丑陋。顯示的格式和保存的格式需要分別指定。我們修改了大量的代碼。
dojo 的下拉框也被用戶投訴,過(guò)濾之后一定要再選擇一次或者按回車(chē)才能選定結(jié)果,前臺(tái)值和后臺(tái)值分開(kāi)操作也帶來(lái)很多不變。
dojo 的驗(yàn)證文本框顏色現(xiàn)實(shí)有bug,我們不得不修改代碼
dojo的對(duì)話框也有問(wèn)題,對(duì)話框中無(wú)法在彈出對(duì)話框。對(duì)話框的操作和控制很不靈活。
js代碼不利于管理,容易發(fā)生命名沖突。
致命的問(wèn)題發(fā)生在項(xiàng)目的后期,在客戶的系統(tǒng)進(jìn)行測(cè)試時(shí)發(fā)現(xiàn)。dojo的性能非常差,在賽揚(yáng)2G的電腦上,一個(gè)頁(yè)面顯示的時(shí)間竟然需要17秒。簡(jiǎn)直就是噩夢(mèng)。
另外使用dojo的對(duì)話框時(shí)出現(xiàn)cpu占用100%而且一直不回落下來(lái)。
頁(yè)面載入完成的時(shí)候,它有將整個(gè)頁(yè)面重新刷新一次,又需要花費(fèi)額外的5到8s時(shí)間,不僅花費(fèi)更多的時(shí)間,而且嚴(yán)重影響客戶體驗(yàn)。
還有開(kāi)發(fā)過(guò)程中碰到的無(wú)數(shù)問(wèn)題,雖然一個(gè)一個(gè)被解決,但是無(wú)疑是一次一次痛苦的煎熬。
最后,在性能面前,我被dojo徹底打敗,如此的速度是任何客戶都無(wú)法忍受的,客戶不可能為了這個(gè)系統(tǒng)全部升級(jí)電腦cpu。而且還有很多未知的問(wèn)題可能還沒(méi)有被發(fā)覺(jué),不如內(nèi)存泄露,可能導(dǎo)致資源耗盡,內(nèi)存耗盡。cpu 的占用可能在使用時(shí)間長(zhǎng)了之后越來(lái)越高,等等,這些都是我擔(dān)心的問(wèn)題。
使用Ajax或者說(shuō)Rich client,一定要謹(jǐn)慎啊。使用新的技術(shù)和框架,一定要謹(jǐn)慎,這是我的教訓(xùn),希望給同行們一個(gè)參考。