re: qooxdoo 0.6rc1 發(fā)布了 一農(nóng) 2006-09-29 14:38
1、我感覺(jué)主要的停頓是發(fā)生在代碼庫(kù)的載入、對(duì)象的初始化,所以使用NativeWindow總有些不太好,但是也如大家討論,直接使用qx模擬的window確實(shí)也有諸多問(wèn)題,我自己也使用過(guò)通過(guò)xhr載入js文件的方法,來(lái)實(shí)現(xiàn)類(lèi)似多文檔的方式,但效果不理想。通過(guò)封裝可以解決變量命名的問(wèn)題,但我有些頁(yè)面需要直接寫(xiě)一些HTML來(lái)實(shí)現(xiàn),這些HTML里的id就要保證不重名。再就是調(diào)試的問(wèn)題。雖然上述問(wèn)題我也都找到了解決的方法,但仍感覺(jué)不放心,所以我現(xiàn)在還是決定使用NativeWindow的方式,這個(gè)難度較低,容易掌握,主要問(wèn)題就是載入庫(kù)時(shí)的速度問(wèn)題,我想應(yīng)該想辦法壓縮庫(kù),每個(gè)頁(yè)面載入的庫(kù),可以做些裁減。這個(gè)解決方法或許更穩(wěn)妥些。
2、國(guó)際化,用靜態(tài)js的話(huà)是比較麻煩,但既然大家抉擇使用struts+jsp可以解決國(guó)際化問(wèn)題,那我抉擇可以把js當(dāng)jsp來(lái)處理嘛。隨便說(shuō)說(shuō),我現(xiàn)在也沒(méi)考慮這個(gè)事情。
3、百萬(wàn)級(jí)js代碼,我現(xiàn)在做的項(xiàng)目因?yàn)槭腔趒ooxdoo的,所以多數(shù)頁(yè)面都是全js的,當(dāng)然限于項(xiàng)目的規(guī)模沒(méi)有百萬(wàn)級(jí)js。但使用xhr載入js文件的話(huà),就不存在一次性載入上百js文件的問(wèn)題了。
re: qooxdoo 0.6rc1 發(fā)布了 一農(nóng) 2006-09-15 01:00
有不少同仁詢(xún)問(wèn)關(guān)于qooxdoo和json-rpc-java的相關(guān)問(wèn)題,這里做些說(shuō)明:
1、qooxdoo的官方網(wǎng)站是qooxdoo.org,上面有demo,很多,你可以下載后在本機(jī)查看。對(duì)于ajax,dojo,yui也要多關(guān)注,dojo受支持程度更好些。最近我在使用jquery,感覺(jué)非常好,推薦了解。
2、qooxdoo和json-rpc-java沒(méi)什么必然的聯(lián)系,json-rpc-java就是一種web rpc,如果你只做java的話(huà),建議看看dwr就可以了。另外qooxdoo本身也有rpc模塊,是基于json-rpc的。
@fred
你是說(shuō) dhtmlXGrid.js ?
還是其他的?
qooxdoo0.6有了table,這個(gè)table相當(dāng)于一般講的grid,
http://qooxdoo.org/demo
你可以到他的網(wǎng)站去看看,因?yàn)槭菄?guó)外的網(wǎng),所以速度上要慢一些
@sun123
1、這個(gè)我也沒(méi)遇到過(guò),使用iframe問(wèn)題滿(mǎn)多的,現(xiàn)在我模仿桌面程序的多文檔方式來(lái)做的,你也可以嘗試一下,另外感覺(jué)你現(xiàn)在使用qooxdoo的方式,倒不如找一些比較小的ui庫(kù)來(lái)做。
2、現(xiàn)在這種用法是會(huì)在document.onload之后調(diào)用window.application.main,如果直接寫(xiě)的話(huà),只能寫(xiě)在</body>之前,否則有些內(nèi)容還沒(méi)準(zhǔn)備好,不過(guò)如果你的界面都是使用qooxdoo來(lái)生成的倒也無(wú)所謂,但qooxdoo的執(zhí)行就是找這個(gè)東西,在他的官方網(wǎng)站上有篇文章是介紹qooxdoo的執(zhí)行順序的,你可以去找來(lái)看看。
@jolestar
你應(yīng)該了解dwr,這個(gè)和qooxdoo沒(méi)有什么關(guān)系。
re: qooxdoo 0.6rc1 發(fā)布了 一農(nóng) 2006-08-23 09:19
re: qooxdoo 0.6rc1 發(fā)布了 一農(nóng) 2006-08-23 09:18
@sun123
速度上我沒(méi)太注意,那個(gè)api打開(kāi)慢,我想主要是內(nèi)容多。
我現(xiàn)在新的項(xiàng)目打算使用0.6來(lái)做,并且已經(jīng)把原來(lái)使用0.5x的一個(gè)頁(yè)面改為了0.6的庫(kù),除了類(lèi)名上的轉(zhuǎn)換,其他有少許改動(dòng)。還有些細(xì)節(jié)問(wèn)題,現(xiàn)在還沒(méi)來(lái)得及細(xì)看。
文中我說(shuō)其api的doc好用,現(xiàn)在看也不全是,原來(lái)的時(shí)候,看一個(gè)類(lèi),在一個(gè)頁(yè)面上可以同時(shí)看到該類(lèi)本身和其父類(lèi)的所有屬性和方法,但現(xiàn)在要一層層的點(diǎn),感覺(jué)反倒不如之前了。:)
我還沒(méi)找到國(guó)內(nèi)討論qx的地方,本來(lái)想給Ajax中國(guó)論壇聯(lián)系一下,開(kāi)個(gè)qx的版,但看了一下Ajax中國(guó)經(jīng)營(yíng)的不太理想。
@sun123
我們現(xiàn)在沒(méi)有涉及到多條數(shù)據(jù)的修改,不過(guò)如果做這種功能的話(huà),實(shí)現(xiàn)方法也和form刷新一樣的,xmlhttprequest提交和form提交,主要就是頁(yè)面是否切換,另外xhr似乎不能上傳文件。
只不過(guò)如果我們做的話(huà),就要自己想一下,如何做方便了,qooxdoo的ListView還是單薄了些,我們會(huì)再找些其它的ListView(一般其它的都叫Grid)看看。
sybase公司我總覺(jué)著他不大肆宣傳自己,但他卻推出很多漂亮的工具。
@sun123
似乎你只是使用qooxdoo做外殼,多數(shù)情況下,還是使用其他的技術(shù)。
1、你的“其他的js”是什么,我很感興趣,有這么強(qiáng)的功能,還是使用了一些validate框架,如struts的. 現(xiàn)在我都是自己手工在寫(xiě)js進(jìn)行校驗(yàn)。但正在籌備給QxListView提供一些輔助功能,來(lái)達(dá)到校驗(yàn)的目的,同時(shí)附加增刪改的通用代碼,我們還在開(kāi)發(fā)一個(gè)數(shù)據(jù)庫(kù)管理工具,然后在此基礎(chǔ)上,實(shí)現(xiàn)類(lèi)似ROR的一些機(jī)制,如自動(dòng)先生成一套基本的數(shù)據(jù)庫(kù)管理的代碼,然后項(xiàng)目在這些基礎(chǔ)代碼上,進(jìn)行開(kāi)發(fā)。
2、用腳本寫(xiě)的,準(zhǔn)備用QxBuilder做,但多數(shù)頁(yè)面代碼并不多,大家都懶得去了解QxBuilder。不過(guò)我還是推崇QxBuilder的方式。
3、你的iframe里的內(nèi)容還是使用基本的struts的方式嗎,我這邊因?yàn)榻缑嫒渴鞘褂胵ooxdoo,所以頁(yè)面不進(jìn)行刷新,與后臺(tái)的數(shù)據(jù)交換都是使用xmlhttpclient,但直接使用顯然開(kāi)發(fā)效率太低,所以使用了一些框架,原來(lái)是使用DWR,我也推薦你使用DWR,雖然我現(xiàn)在使用json-rpc-java,但這是經(jīng)過(guò)我們改造的,在使用方便性上和DWR類(lèi)似。
我不知該如何說(shuō)明寫(xiě)點(diǎn)示意代碼你參考一下
后臺(tái)定義類(lèi)
public class Foo{
public void saveObject(com.ynstudio.xxx.User user){....}
}
然后在spring里注冊(cè)為id='foo'
前臺(tái)頁(yè)面的js
var user = new Bean('com.ynstudio.xxx.User');
user.set('id','ST001002');
user.set('name','張三');
json.rpc('foo.saveObject')(user);
@emu
1、樓主已經(jīng)說(shuō)了
“有些時(shí)候無(wú)法改變服務(wù)器端網(wǎng)頁(yè)的編碼(例如獲取別的網(wǎng)站的天氣預(yù)報(bào)信息),在這種時(shí)候就只能在客戶(hù)端通過(guò)js做編碼的工作了,”
2、這個(gè)方法在firefox應(yīng)該不行,所以ajax的編碼問(wèn)題在瀏覽器里還是不能完全解決,只有等瀏覽器擴(kuò)展,并且統(tǒng)一處理方法了。
execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");
@sun123
1、不是很理解你的意思,你的iframe里的頁(yè)面是否也是使用的qooxdoo?
2、對(duì)于數(shù)據(jù)處理來(lái)講,我們使用QxListView來(lái)列表顯示普通的數(shù)據(jù),使用QxTree來(lái)顯示具有層次關(guān)系的數(shù)據(jù),使用QxTextField,QxComboBox等來(lái)構(gòu)成Form表單,給用戶(hù)輸入數(shù)據(jù),然后將這些數(shù)據(jù)組織成數(shù)據(jù)對(duì)象,使用json-rpc-java來(lái)傳遞為后臺(tái)進(jìn)行處理,官方的json-rpc-java并不好用,你可以使用dwr來(lái)完成同樣的功能。我們使用QxGridLayout來(lái)對(duì)QxTextField,QxComboBox進(jìn)行布局,自己寫(xiě)了一個(gè)FormManager的方法來(lái)對(duì)QxTextField,QxComboBox這些表單項(xiàng)做些輔助性的管理。最后的效果就如本文中的第三張圖片一樣。
不知這些是否有點(diǎn)用處。
@sun123
你是在正式的項(xiàng)目中使用的嗎,能不能詳細(xì)談一下你的想法,包括各類(lèi)ajax庫(kù)的比較,福星高照兄也是,抽時(shí)間寫(xiě)點(diǎn)全面一些的文字,我們也學(xué)習(xí)一下 :-) ,看看高手的想法
@asan
:-)
正如sun123所說(shuō)。
@sun123
我覺(jué)得你那里舊機(jī)器跑得慢,更重要的原因應(yīng)該不是700k的。。。。。
是的,我的理解是對(duì)于老舊的機(jī)器,瀏覽器解析這700k的代碼可能有些困難,而不是因?yàn)槲募蠖鴤鬏斅瑸g覽器可以緩存的,這個(gè)不是問(wèn)題。多數(shù)情況下,一般的電腦運(yùn)轉(zhuǎn)起來(lái)還是蠻流暢的,只是一次打開(kāi)一個(gè)幾百個(gè)節(jié)點(diǎn)的樹(shù)有明顯的等待,這個(gè)還是可以接受的。
@福星高照
YUI我覺(jué)著主要是比較小,如果項(xiàng)目中僅僅是把特殊的WEB UI作為輔助的話(huà),還是不錯(cuò)的,雖然部件還不全。而qooxdoo 700K的代碼真的很頭疼,有些客戶(hù)的舊機(jī)器跑起來(lái)很費(fèi)力。
我有時(shí)也覺(jué)著使用現(xiàn)在這種模式開(kāi)發(fā)不如以前的直接網(wǎng)頁(yè)get/post方便,一直感覺(jué)有些想不通,為什么會(huì)原來(lái)的模式會(huì)感覺(jué)方便,現(xiàn)在感覺(jué)原因是這樣幾個(gè)方面,1、原來(lái)的時(shí)候頁(yè)面設(shè)計(jì)可以交給美工,現(xiàn)在自己做,2、原來(lái)html和java代碼可以混合寫(xiě),即jsp的方式,現(xiàn)在用javascript將顯示和數(shù)據(jù)進(jìn)行結(jié)合,使用widget還好些,如果是直接操作HTML,那就像CGI的方式了,3、javascript的編輯器比jsp的還不好。
還有一種生成靜態(tài)頁(yè)面的方法,你在網(wǎng)上搜
extends HttpServletResponseWrapper
就可以了解到了.
@sun123
另外,強(qiáng)烈建議大家搞個(gè)討論qx的地方,上傳一些例子share。
大家可以看看哪家論壇可以提供這個(gè)幫助,我朋友有個(gè)論壇,但其主題和這個(gè)不是很合適,雖然他們公司也是做互聯(lián)網(wǎng)開(kāi)發(fā)的。
@hawk
我用QxRequest獲取數(shù)據(jù),返回的卻是中文亂碼,
你查一下response的header中是否有編碼信息,如果沒(méi)有在header中添加編碼信息。
@hawk
另外我個(gè)人覺(jué)得QxListView并不適合大量數(shù)據(jù)的顯示,在數(shù)據(jù)列太多情況下,滾動(dòng)條的速度變的慢的難以接受,我更喜歡active_widgets的grid,如果能寫(xiě)一個(gè)QxGrid就好了,呵呵
是的,QxListView的效率不太好,我看到其他庫(kù)的一些ListView(有的叫g(shù)rid)是基于table實(shí)現(xiàn)的,而QxListView是單獨(dú)的一個(gè)個(gè)div,在我的T42上其實(shí)運(yùn)行還是滿(mǎn)流暢的,但配置差一些的機(jī)器就明顯的滿(mǎn)了。http://www.linb.net/ 的ListView(grid)滿(mǎn)好的可以參考一下,linb是國(guó)人開(kāi)發(fā)的,不錯(cuò)。
@sun123
你的問(wèn)題和福星高照兄的不一樣,你用iframe后,就會(huì)存在這樣的問(wèn)題,因?yàn)椴藛蔚娘@示和消失是通過(guò)感知鼠標(biāo)的,但當(dāng)你的鼠標(biāo)進(jìn)入iframe后,菜單所在的frame就無(wú)法感知鼠標(biāo)了,所以也就消失不了了。
<Connector port="8080" URIEncoding="UTF-8" ... />
如果這樣解決,勢(shì)必影響其它的application,我以前在使用mvnforum的時(shí)候解決的方法是將form的method由get改為post。如果是鏈接的話(huà),需要進(jìn)行encode處理,我最近也要試用這兩款軟件,到時(shí)再仔細(xì)研究一下。
@mixlee
在UI上B/S是倒退,使用類(lèi)似C/S的web ui是為了改善可操作性。
胖客戶(hù)端是倒退,但富客戶(hù)端現(xiàn)在是趨勢(shì)。
比如gmail,為什么搞那么麻煩的代碼,就是為了方便客戶(hù)操作。
有些地方ajax只是輔助性的,有些地方則是基于ajax來(lái)進(jìn)行開(kāi)發(fā),場(chǎng)合不同而已。
js web ui+rpc+service是否也是一種框架呢?
我用qooxdoo(一個(gè)js wen ui庫(kù))來(lái)構(gòu)建頁(yè)面,使用json-rpc-java(類(lèi)似DWR)來(lái)訪(fǎng)問(wèn)后臺(tái)的java程序,傳遞和獲取數(shù)據(jù)。
http://m.tkk7.com/ynstudio/archive/2006/07/23/59648.html
我認(rèn)為由于使用了XHR,使得頁(yè)面不刷新,帶來(lái)很多方便,而ActionForm使用的繁瑣,數(shù)據(jù)模型上的簡(jiǎn)單,是最讓我討厭的,而采用了json-rpc,感覺(jué)真的很好。因?yàn)榭梢郧昂笈_(tái)直接傳遞對(duì)象。就像使用javascript直接調(diào)用java程序一樣。不再像以前一樣想辦法對(duì)付ActionForm,因?yàn)榧幢闶褂昧薆eanUtils,也存在很多問(wèn)題的。
@福星高照
1、"你說(shuō)得太簡(jiǎn)單,menubarbutton如何用"
因?yàn)槲椰F(xiàn)在沒(méi)時(shí)間去看這個(gè)問(wèn)題所以我才說(shuō),讓你參考一下menubarbutton,因?yàn)镼xmenubar就處理了mouseleave,來(lái)切換menu。
2、"js不需要每次都載入吧,緩存不能對(duì)js起作用嗎?"
js文件是被緩存但是瀏覽器還是要重新把qooxdoo.js解釋一遍,這個(gè)是消耗時(shí)間的,而且是明顯的消耗時(shí)間。
3、"關(guān)于刷新前的狀態(tài),該保留的還是得保留吧,"
不單刷新,而且后退也應(yīng)該處理的,但感覺(jué)會(huì)帶來(lái)麻煩,對(duì)我做的項(xiàng)目來(lái)講似乎也無(wú)必要.不知你是如何保留刷新前狀態(tài)的.如果我來(lái)處理這個(gè)問(wèn)題的話(huà),我可能會(huì)模仿編輯器的方式設(shè)置一個(gè)undomanager,來(lái)處理,通過(guò)iframe來(lái)記錄后退。
@福星高照
localeCompare,^0^,好
@李孜
開(kāi)發(fā)人員的回復(fù)只是解釋了,這個(gè)內(nèi)存問(wèn)題的原因,并沒(méi)有說(shuō)可以解決,除了刷新,我們發(fā)現(xiàn)只有把所有相關(guān)的頁(yè)面都最小化,IE才會(huì)進(jìn)行內(nèi)存的釋放。
你說(shuō)bindows沒(méi)這個(gè)問(wèn)題,抽時(shí)間研究一下。不過(guò)在我們項(xiàng)目里,主要的內(nèi)存消耗我們發(fā)現(xiàn)是由于window.open造成的,同一頁(yè)面長(zhǎng)時(shí)間操作變化不算太大。
@福星高照
1、我剛才看了一下確實(shí)中文排序有問(wèn)題,不過(guò)我猜想原因是我使用RPC是基于utf-8的,所以排序不是按拼音。utf-8里漢字是按筆劃組織的。這個(gè)問(wèn)題我有時(shí)間會(huì)測(cè)一下原因,不過(guò)似乎不好解決,沒(méi)辦法的話(huà),可能要交由后臺(tái)處理一下了。
2、這個(gè)我沒(méi)了解過(guò),你可以參考一下menubarbutton。
@李孜
首先是remove,然后再dispose掉,不過(guò)也降不到初始值。bindows不是免費(fèi)的,所以我這邊沒(méi)有使用。
@福星高照
1、你說(shuō)的情況確實(shí)是的
2、我測(cè)試的是支持中文排序的,你再檢查一下看看,不過(guò)我還沒(méi)來(lái)得及看0.5.3,另外如果你需要特殊的排序方法,可以自己添加排序方法,可以參考一下
QxCompare.js
3、我的gmail信箱是ynstudio,在這回帖聊天怕影響別人瀏覽^0^。
@福星高照
1、你在qooxdoo-0.5.2-dos\themes\appearance\default下會(huì)看到theme.js文件,看一下代碼就明白了^0^
2、JSON-RPC-JAVA在后臺(tái)發(fā)生異常時(shí),他會(huì)生成一個(gè)js的異常,你可以捕獲該異常然后自行處理。如果得不到數(shù)據(jù)就直接返回你返回的內(nèi)容,或?yàn)閚ull,或?yàn)榭諗?shù)組等。
不知兄弟,身在何方,如果在南京,我們可以一起聊聊。我現(xiàn)在有個(gè)java的學(xué)習(xí)小組,大家互相學(xué)習(xí),互相促進(jìn)。
@hawk
這個(gè)問(wèn)題我也嘗試了一下,但沒(méi)成功,還沒(méi)時(shí)間去了解原因,你可以查看一下LisView里的幾個(gè)單元格的類(lèi),可以添加字體等樣式的,但我加了背景后背景的顯示總是一閃一閃的。現(xiàn)在我用的電腦上沒(méi)源碼,我會(huì)抽時(shí)間研究一下這個(gè)問(wèn)題,到時(shí)在此回復(fù)一下。
另外推薦firebug,可以幫助你解決這個(gè)問(wèn)題。
to 福星高照
ListView的單元格實(shí)際上是一個(gè)個(gè)的div拼起來(lái)的,如果需要邊框就要改變這些div的border,這個(gè)需要你設(shè)置單元格的邊框?qū)傩浴D憧梢粤私鈗ooxdoo的theme,然后給你用的單元格,添加border屬性就可以實(shí)現(xiàn)了。我試了一下可以,但如果你要對(duì)邊界上的單元格和內(nèi)部的單元格做區(qū)別對(duì)待的話(huà),就要修改庫(kù)的代碼了。或者對(duì)所有單元格二次處理一遍。
echo2和qooxdoo的機(jī)制不一樣,速度上不好比。echo2也有設(shè)計(jì)工具了,這個(gè)滿(mǎn)方便的,但我覺(jué)著echo2的方式不太好,至少我不喜歡。qooxdoo+rpc的開(kāi)發(fā)模式更像C/S方式的開(kāi)發(fā),可惜沒(méi)有界面設(shè)計(jì)工具,也沒(méi)有很好的javascript編輯環(huán)境,不過(guò)我們現(xiàn)在盡量將邏輯放在后臺(tái),所以開(kāi)發(fā)起來(lái)感覺(jué)還是蠻好的,比傳統(tǒng)的網(wǎng)頁(yè)方式感覺(jué)還好,還快,一個(gè)同事說(shuō),使用qooxdoo+rpc感覺(jué)很多事情都很直接,而不是像使用網(wǎng)頁(yè)刷新那樣,要考慮頁(yè)面數(shù)據(jù)的保留問(wèn)題等等。
@原創(chuàng)專(zhuān)欄 開(kāi)源學(xué)習(xí)
我修改的目的就是為了讓其他同事能將精力都放在業(yè)務(wù)上,而不是技術(shù)上。
“ajax,ui框架太容易讓我們有修改的欲望了. ”我做編碼有幾年了,被震撼了幾次以后,對(duì)自己使用的框架的修改欲望完全都是來(lái)源于項(xiàng)目的需要,特別是對(duì)今后可能升級(jí)的框架,一般不和原始作者溝通,我是不會(huì)做修改的。
我需要對(duì)DWR來(lái)做一些改動(dòng)來(lái)適應(yīng)我自己的需要,但在我看懂DWR之前我看懂了JSON-RPC-JAVA(幾眼就看懂了),而且能滿(mǎn)足我的需要所以我就改造JSON-RPC-JAVA了,現(xiàn)在仍然使用JSON-RPC-JAVA的原因是JSON-RPC-JAVA是基于JSON-RPC的,而DWR的協(xié)議更私有一些。另外因?yàn)槲沂褂昧藂ooxdoo,DWR的一些js代碼顯的多余了,雞肋一般。等我把JSON-RPC-JAVA再做些改動(dòng),吸收DWR的一些優(yōu)點(diǎn),從我的項(xiàng)目中抽取出來(lái)之后我會(huì)將代碼公開(kāi)出來(lái)。
我分析了一下163(尚未結(jié)束),很多地方還都是用的frame,主體是gblankxxxxx.htm,使用firefox保存文件,會(huì)給你帶來(lái)一些驚喜。
另外gblankxxxxx.htm的大體結(jié)構(gòu)是
<html>
<body>
<div>開(kāi)頭</div>
<table>
<tr>
<td>
左側(cè)導(dǎo)航
</td>
<td>
<!--右側(cè)-->
<div>
共四、五個(gè),和電子郵件、通訊錄、郵箱選項(xiàng)等幾個(gè)tab對(duì)應(yīng)。
</div>
</td>
</tr>
</table>
</body>
</html>