锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
I/O
dojo.io.blind浠嬬粛
鍦ㄦ垜浠埗浣渄ojo鐨勬椂鍊欙紝鐩殑鏄鐢ㄦ埛鍜屽紑鍙戣呴兘鑳戒韓鍙楀埌DHTML紼嬪簭銆傚湪寰堝鏈嬪弸鐨勬敮鎸佷笅錛岀壒鍒槸Aaron
Boodman鍜孧ark Anderson錛屾垜浠凡緇忔壘鍒頒簡瑙e喅鍙敤鎬х殑鏂規(guī)硶銆傛垜浠彁渚涗簡涓涓崟鐙殑鏄撶敤鐨凙PI鍜屼竴涓寘瑁呯被錛岃繖涓被鍙渶瑕佷袱涓枃浠躲俤ojo.io鍖呮彁渚涗簡瀵筙MLHTTP鍜屼竴浜涘叾浠栨洿澶嶆潅鐨勪紶杈撶粨鏋勭殑鏀寔銆?br />
鍦╠ojo.io鍖呬腑鎴戜滑涓鑸渶甯鎬嬌鐢ㄧ殑鏄痙ojo.io.bind()鏂規(guī)硶銆俤ojo.io.blind()鏄竴涓爣鍑嗙殑寮傛鐨勮姹侫PI錛屽畠鍖呭惈浜嗗悇縐嶄紶杈撳眰錛坱ransport layers錛夛紝鍖呮嫭queues of iFrames,XMLHTTP,mod_pubsub,LivePage絳夌瓑銆侱ojo浼氳瘯鍥句負褰撳墠鐨勮姹傞夋嫨鏈鍚堥傜殑浼犺緭鏂規(guī)硶錛屽洜涓哄湪鍋氱綉绔欐椂涓鑸笉浼氫嬌鐢ㄥ埌鍏朵粬浼犺緭錛屾墍浠ユ垜浠彧鐢ㄥ埌XMLHTTP銆俤ojo鎺ュ彈涓涓尶鍚嶇殑綾伙紝浣嗘槸鍦ㄧ煡閬撹繖涓被鐨勫睘鎬х殑鎯呭喌涓嬶紝鎶婂畠浣滀負鏂規(guī)硶鍙傛暟錛坒unction argument錛夈備笅闈㈢殑浠g爜鏄垱寤轟竴涓姹傦紙request錛夛紝榪欎釜璇鋒眰浼氫粠URL榪斿洖鍘熷鐨勫瓧絎︿覆銆?br />
聽聽聽聽url:聽"http://foo.bar.com/sampleData.txt",
聽聽聽聽load:聽function(type,聽data,聽evt){聽/*do聽something聽w/聽the聽data聽*/聽},
聽聽聽聽mimetype:聽"text/plain"
});
榪欏氨鏄叏閮紝浣犳彁渚涗簡涓涓暟鎹湴鍧錛岃繕鏈変竴涓綋浣犲緱鍒拌繑鍥炲兼椂瑕佹墽琛岀殑function銆備絾鏄鏋滃湪璇鋒眰榪囩▼涓嚭閿欎簡鎬庝箞鍔炲憿錛熸垜浠啀鏉ュ垱寤轟竴涓猺egister鏉ヨВ鍐籌細
聽聽聽聽url:聽"http://foo.bar.com/sampleData.txt",
聽聽聽聽load:聽function(type,聽data,聽evt){聽/*do聽something聽w/聽the聽data聽*/聽},
聽聽聽聽error:聽function(type,聽error){聽/*do聽something聽w/聽the聽error*/聽},
聽聽聽聽mimetype:聽"text/plain"
});
鍚屾牱涔熷彲浠ュ彧鍒涘緩涓涓崟鐙殑handler鏉ヨВ鍐籌細
聽聽聽聽url:聽"http://foo.bar.com/sampleData.txt",
聽聽聽聽handle:聽function(type,聽data,聽evt){
聽聽聽聽聽聽聽聽if(type聽==聽"load"){
聽聽聽聽聽聽聽聽聽聽聽聽//聽do聽something聽with聽the聽data聽object
聽聽聽聽聽聽聽聽}else聽if(type聽==聽"error"){
聽聽聽聽聽聽聽聽聽聽聽聽//聽here,聽"data"聽is聽our聽error聽object
聽聽聽聽聽聽聽聽聽聽聽聽//聽respond聽to聽the聽error聽here
聽聽聽聽聽聽聽聽}else{
聽聽聽聽聽聽聽聽聽聽聽聽//聽other聽types聽of聽events聽might聽get聽passed,聽handle聽them聽here
聽聽聽聽聽聽聽聽}
聽聽聽聽},
聽聽聽聽mimetype:聽"text/plain"
});
涓嬮潰鐨勪唬鐮佹彁浜や竴孌礿avascript紼嬪簭孌碉紝鐒跺悗璁╂湇鍔″櫒榪愯瀹冿紝涓鑸垜浠繖涔堝仛鏄負浜嗗姞閫熺▼搴忚繍琛岋紝娉ㄦ剰mimetype錛?br />
聽聽聽聽url:聽"http://foo.bar.com/sampleData.js",
聽聽聽聽load:聽function(type,聽evaldObj){聽/*聽do聽something聽*/聽},
聽聽聽聽mimetype:聽"text/javascript"
});
濡傛灉浣犳兂紜繚紼嬪簭浣跨敤XMLHTTP錛屽彲浠ヨ繖鏍峰啓錛?br />
聽聽聽聽url:聽"http://foo.bar.com/sampleData.js",
聽聽聽聽load:聽function(type,聽evaldObj){聽/*聽do聽something聽*/聽},
聽聽聽聽mimetype:聽"text/plain",聽//聽get聽plain聽text,聽don't聽eval()
聽聽聽聽transport:聽"XMLHTTPTransport"
});
浣滀負涓涓猨ack-of-all-trades錛堜竾浜嬮氾級錛宐ind()鍚屾牱鏀寔鏉ヨ嚜浜庤〃鍗曟彁浜ょ殑鏁版嵁銆?br />
聽聽聽聽url:聽"http://foo.bar.com/processForm.cgi",
聽聽聽聽load:聽function(type,聽evaldObj){聽/*聽do聽something聽*/聽},
聽聽聽聽formNode:聽document.getElementById("formToSubmit")
});
RPC
浣犲彲浠ョ湅鍒幫紝Dojo閫氳繃dojo.io.bind鎻愪緵浜嗙畝鍗曪紝寮哄ぇ鐨勬柟娉曚嬌鐢ㄥ縐嶅鏍風(fēng)殑I/O functions銆備絾鏄湪寮鍙戣繃紼嬩腑錛岀▼搴忓憳浼氳皟鐢ㄥ緢澶氬緢澶欼/O錛岃繖鍚屾椂浼氱粰鏈嶅姟鍣ㄥ拰瀹㈡埛绔姞閲嶈礋鎷呫侱ojo鐨凴PC鏈嶅姟灝辨槸涓轟簡鍑忓皯璐熸媴錛屾槗鐢紝綺劇畝浠g爜鑰岀敓鐨勩?br />
RPC鐨勫叏鍚嶆槸Remote Procedre Calls,鎴栬匯emote Method Invocation,錛堣瘧鑰咃細榪滅▼method璋冪敤錛夈傛渶鍩烘湰鐨勶紝RPC鍏佽寮鍙戣呰皟鐢ㄥ湪榪滅▼鏈嶅姟鍣ㄤ笂鐨勬柟娉曪紙method錛夈侱ojo涓嶄粎鎻愪緵浜嗗熀鏈殑RPC client鍖咃紝鑰屼笖榪樻墿灞曚簡瀹冿紝浣垮畠鏀寔JSON-RPC鏈嶅姟鍜孻AHOO鏈嶅姟銆傚悓鏃朵綘涔熷彲浠ヨ嚜宸卞啓鍑虹浉瀵逛簬鍏朵粬鏈嶅姟鐨勭被銆?br />
鎴戜滑鍋囧畾鏈変竴涓渶瑕佽皟鐢ㄦ湇鍔″櫒绔▼搴忕殑灝忕▼搴忥紝鍋囪瑕佽皟鐢╝dd(x,y)鍜宻ubtract(x,y)銆傚湪娌℃湁鐗規(guī)畩鎯呭喌鐨勬潯浠朵笅錛屾垜浠殑瀹㈡埛绔細榪欐牱鍐欙細
聽聽聽聽request聽=聽{x:聽x,聽y:聽y};
聽聽聽聽dojo.io.bind({
聽聽聽聽聽聽聽聽聽聽聽聽url:聽"add.php",
聽聽聽聽聽聽聽聽聽聽聽聽load:聽onAddResults,
聽聽聽聽聽聽聽聽聽聽聽聽mimetype:聽"text/plain",
聽聽聽聽聽聽聽聽content:聽request
聽聽聽聽});
}
subtract聽=聽function(x,y)聽{
聽聽聽聽request聽=聽{x:聽x,聽y:聽y};
聽聽聽聽
聽聽聽聽dojo.io.bind({
聽聽聽聽聽聽聽聽聽聽聽聽url:聽"subract",
聽聽聽聽聽聽聽聽聽聽聽聽load:聽onSubtractResults,
聽聽聽聽聽聽聽聽聽聽聽聽mimetype:聽"text/plain"
聽聽聽聽聽聽聽聽content:聽request
聽聽聽聽});
}
浣犵湅錛岃繖涓嶆槸寰堥毦銆備絾鏄棤璁烘槸鎴戜滑璁╂湇鍔″櫒榪愯add鍜宻ubtract榪樻槸璁╁鎴風(fēng)鑷繁璁$畻錛岃繖鍙槸涓涓潪甯哥畝鍗曠殑紼嬪簭銆傚鏋滄垜浠璋冪敤鍦ㄦ湇鍔″櫒涓?0涓笉鍚宮ethod浼氭庝箞鏍峰憿錛熸垜鐚滄垜浠彲鑳借閲嶅鐨勫啓鍑犱箮涓鏍風(fēng)殑浠g爜涓閬嶅張涓閬嶏紝姣忔閮借鍒涘緩涓涓姹傜被錛坮equest object),璁懼畾URL錛岃瀹氬彉閲忕瓑絳夈傝繖涓嶄粎瀹規(guī)槗鍑洪敊錛岃屼笖榪樺緢鏋嚗銆?br />Dojo鐨凴PC瀹㈡埛绔畝鍖栦簡榪欎釜榪囩▼錛?p>