確實(shí)是一個(gè)老話(huà)題了,很多同行已經(jīng)討論這個(gè)問(wèn)題很多了.
一直關(guān)注我的朋友會(huì)記得,在Ext 正火的時(shí)候,我推出了一個(gè)以Ext portal為基礎(chǔ),整合struts,spirng,hibernate的開(kāi)源項(xiàng)目,很多朋友下載,配置,運(yùn)行了這個(gè)項(xiàng)目,并通過(guò)各種方式就ext的使用進(jìn)行了溝通.
怎么說(shuō)呢?寫(xiě)完第一個(gè)不算完整的FaceYe ext版本后,我自己心里多多少少有些無(wú)奈.雖然說(shuō)FaceYe做成了可配置的類(lèi)似portal結(jié)構(gòu),但是使用ext做出的portlet離真正的portlet還是有很大距離的.
而最大問(wèn)題,我覺(jué)得不在這里,就我們知道,Ext本身已經(jīng)很臃腫了,使用Ext寫(xiě)東西,很少會(huì)直接去寫(xiě)Html,作為我來(lái)說(shuō),大多工作是通過(guò)直接與js腳本來(lái)做了,似乎正應(yīng)了很多朋友熱忠的one application one pae,確實(shí),FaceYe可以說(shuō)在用戶(hù)界面上做到了這一點(diǎn),同時(shí)頁(yè)面的布局可以隨意改變,頁(yè)面上的模塊可以隨意添加,比如從最初的RSS模塊,到后來(lái)的圍繞RSS的訂閱等服務(wù), 以為博客等,都可以隨意的去組裝..這個(gè)過(guò)程,我所寫(xiě)的所有html代碼,除了header里面加載進(jìn)來(lái)的css/js外,留下的,幾乎只有空空的body了.
一個(gè)朋友看了以后,說(shuō):靠,頁(yè)面上的東西怎么出來(lái)的?
可能很多朋友也會(huì)這么說(shuō),隨著我繼續(xù)向下開(kāi)發(fā),功能越來(lái)越多,要加載的東西也越來(lái)越多的時(shí)候,我設(shè)計(jì)了另外一個(gè)功能,把所有要加載的 js路徑寫(xiě)入數(shù)據(jù),當(dāng)需要加載的時(shí)候,再根據(jù)路徑去加載指定的js,到后來(lái),我自己甚至都分不清哪一個(gè)js對(duì)應(yīng)哪一個(gè)功能模塊了.雖然js有說(shuō)明,有注視,但有時(shí)候我真的要去select數(shù)據(jù)庫(kù)了.雖說(shuō)用大量jsp來(lái)完成類(lèi)似的功能或許也會(huì)出現(xiàn)這樣的問(wèn)題,但我覺(jué)得,混亂,在大量使用js,使用return null這樣的action的時(shí)候,使混亂更加混亂了.
使用Ext帶為的另外一個(gè)問(wèn)題,是頁(yè)面是只留下空空如也的body了,而這不是google這樣的搜索引擎喜歡的,而我們使用Ext做的站點(diǎn),也很難被搜索引擎收錄,做seo,也不容易.看到過(guò)一個(gè)朋友使用Ext做的網(wǎng)站,從使用Ext的角度來(lái)看,真的是下了很大功夫,可seo,真的很艱難.
所以隨著開(kāi)發(fā)的不斷深入,我發(fā)現(xiàn),不能繼續(xù)使用Ext進(jìn)行所有的開(kāi)發(fā)了,至少,不能大量使用Ext進(jìn)行互聯(lián)網(wǎng)應(yīng)用的開(kāi)發(fā)了.
總的原因
1.Ext體積太大(沒(méi)使用GZIP超過(guò)153K)
2.大量使用Ext不利于網(wǎng)站做SEO.Ext的各種panel,包括Tab,Grid,Win,Form等等,生成起來(lái)很簡(jiǎn)單,大多只需要幾句代碼就可以了,可以不使用一句html,就可以生成出來(lái)一個(gè)漂亮的布局.雖然工作量少了,頁(yè)面看上去漂亮了,可搜索引擎也發(fā)現(xiàn)不了網(wǎng)站了.得不嘗失.
3.兼容.Ext雖然在兼容性方面花了很大功夫,但在某些時(shí)候,還是會(huì)偶爾展現(xiàn)出來(lái)一個(gè)意想不到的結(jié)果,令人渧笑皆非.
4.調(diào)試.雖然我們有很多調(diào)試工具可以使用,但有時(shí)候,真的不知道是哪里出了問(wèn)題,新來(lái)開(kāi)發(fā)的,更是一愁莫展.
所以到了后來(lái),我開(kāi)始尋找另外一種更為簡(jiǎn)單的式式來(lái)開(kāi)發(fā)了.那就是jQuery.jQuery沒(méi)有像Ext那里,提供一切你想要的,個(gè)人覺(jué)得 ,jQuery更專(zhuān)注于簡(jiǎn)化最基礎(chǔ)的開(kāi)發(fā)工作.所以使用起來(lái),也就感覺(jué)更像是使用原始的js進(jìn)行開(kāi)發(fā)一樣.而頁(yè)面上的html結(jié)構(gòu),跟沒(méi)使用jQuery以前,沒(méi)有太大差別是.這對(duì)于網(wǎng)站開(kāi)發(fā)來(lái)說(shuō),我覺(jué)得是一件好事情.
從使用Ext進(jìn)行FaceYe的開(kāi)發(fā),到后來(lái)感覺(jué)到迷茫,試用YUI,再到選擇jQuery進(jìn)行實(shí)際的工作,一路走來(lái),感覺(jué),真的是愛(ài)恨交加.Ext簡(jiǎn)化了很多工作,讓開(kāi)發(fā)更簡(jiǎn)潔,更方便,但也帶來(lái)了很多麻煩,給我們留下了更小的選擇空間,YUI跟Ext,雖說(shuō)不像Ext一樣,但使用起來(lái),到處是Ext的影子,似乎像一個(gè)剛剛分手的戀人一樣,使用起來(lái),太多無(wú)奈.直到開(kāi)始使用jQuery,才感覺(jué),又有了當(dāng)初跨入IT行業(yè)的激情.
總之一句話(huà),如果你做WEB,別用Ext,如果你做大的項(xiàng)目,或是壓力較大的項(xiàng)目,最好別全部使用Ext.如果你的項(xiàng)目人員不穩(wěn)定,只是極少數(shù)人懂Ext,別用Ext.
ext的js控制太強(qiáng),給自己的選擇控制的余地就小了.
而且學(xué)習(xí)調(diào)試的成本都不低啊.