(Translated by https://www.hiragana.jp/)
AJAX - 维基百科,自由的百科全书 とべ转到内容ないよう

AJAX

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
重定しげさだこうAjax
Ajax
编程范型Webapp, HTML, JavaScript, DHTML, DOM, XMLHttpRequest, JSON, XML, XSLT, XHTML, CSS
設計せっけいしゃ杰西·詹姆·贾瑞とく
发行时间2005ねん2がつ18にち,​19ねんまえ​(2005-02-18

AJAXそくAsynchronous JavaScript and XML”(どうてきJavaScriptあずかXML技術ぎじゅつ),ゆびてき一套综合了多項技術的りゅうらんはしあみぺーじ開發かいはつ技術ぎじゅつ。Ajaxてき概念がいねんゆかりすぐる西にし·詹姆·賈瑞とくところ提出ていしゅつ[1]

传统てきWeb应用まこと许用户端はまうつしひょう单(form),とう送出そうしゅつひょう单时就向あみぺーじ伺服发送いち个请もとめ。伺服接收せっしゅう并处传来てきひょう单,しかきさきおくかいいち个新てき网页,ただし这个做法なみ费了许多带宽,いん为在ぜんきさき两个页面ちゅうてきだい部分ぶぶんHTML码往往是しょうどうてきよし于每应用てき沟通需要じゅようこう伺服发送请求,应用てきかいおう时间依赖于伺服てきかいおう时间。这导致了よう户界めんてきかいおうほん应用慢得

あずか不同ふどう,AJAX应用以仅こう伺服发送并取かい必須ひっすてきすうすえ,并在きゃく户端さいようJavaScript处理伺服てきかいおうよし为在伺服浏览间交换的すうすえ大量たいりょう减少,伺服かいおうさらかいりょうどう时,很多てき处理工作こうさく以在发出请求てききゃく户端つくえじょう完成かんせいいん此Web伺服てき负荷也减しょうりょう

类似于DHTMLあるLAMP,AJAXゆび一种单一的技术,而是ゆうつくえ利用りようりょう一系列相关的技术。虽然其名称めいしょう包含ほうがんXML,ただし实际じょうすうすえ格式かくしき以由JSON代替だいたい以进一步减少数据量。而客户端あずかふく务器也并需要じゅよう异步。いち些基于AJAXてき派生はせい合成ごうせいしき(derivative/composite)てきわざ术也ただしざい现,如AFLAX

应用

[编辑]
  • 運用うんようXHTML+CSSらいひょうたち訊;
  • 運用うんようJavaScript操作そうさDOM(Document Object Model)らい執行しっこう動態どうたい效果こうか
  • 運用うんようXMLXSLT操作そうさ資料しりょう
  • 運用うんようXMLHttpRequestあるしんてきFetch APIあずかあみぺーじ伺服進行しんこうどう資料しりょう交換こうかん
  • 注意ちゅうい:AJAXあずかFlashSilverlightJava AppletひとしRIA技術ぎじゅつゆう區分くぶんてき

发展

[编辑]

20せい纪90年代ねんだい,几乎所有しょゆうてき网站みやこゆかりHTML页面实现,ふく务器处理ごと一个用户请求都需要重新加载网页。这样てき处理方式ほうしき效率こうりつこうよう户的たい验是所有しょゆう页面都会とかい消失しょうしつさいじゅうしん载入,そく使ただ一部分页面元素改变也要重新载入整个页面,仅要刷新さっしんあらため变的部分ぶぶん,连没ゆう变化てき部分ぶぶん也要刷新さっしん。这会加重かじゅうふく务器てき负担。

这可以用异步载来かい决。1995ねん,JAVA语言てきだいいちはん发布,ずい发布てきてきJava applets(JAVAしょうほどじょくび实现りょう异步载。浏览どおり过运ぎょう嵌入かんにゅう网页ちゅうてきJava appletsあずかふく务器交换すうすえ刷新さっしん网页。1996ねん,Internet Explorerはたiframe元素げんそ加入かにゅういたHTML,支持しじ局部きょくぶ刷新さっしん网页。

1998ねんまえきさき,Outlook Web Accessしょう组写なりりょうまこときゃく户端脚本きゃくほん发送HTTP请求(XMLHTTPてきだいいち个组けん。该组けんはらぞく于微软Exchange Server,并且迅速じんそくなり为了Internet Explorer 4.0[2]てきいち部分ぶぶん部分ぶぶん观察认为,Outlook Web Accessだいいち个应ようりょうAjaxわざ术的成功せいこうてきしょう业应ようほどじょ,并成为包括ほうかつOddpostてき网络邮件产品ざい内的ないてき许多产品てき领头ひつじただし,2005年初ねんしょ,许多事件じけん使とくAjaxだい众所接受せつじゅGoogleざい它著めいてき交互こうご应用ほどじょちゅう使用しようりょう异步どおり讯,如Google讨论组GoogleGoogle搜索そうさくけんGmailひとし。Ajax这个词由《Ajax: A New Approach to Web Applications一文いちぶんしょ创,该文てき迅速じんそくりゅう传提だかりょうじん使用しよう该项わざ术的识。另外,对Mozilla/Geckoてき支持しじ使とく该技术走こう成熟せいじゅく,变得さら为简单易よう。2006 ねん 4 がつ 5 にちまん维网联盟 (W3C) 发布りょう XMLHttpRequest 对象てきだい一个规范草案,试图创建正式せいしきてき Web standard 标准。XMLHttpRequest 对象てき最新さいしん草案そうあん于 2016 ねん 10 がつ 6 にち发布,XMLHttpRequest 规范现已なり为现ぎょう标准。

Ajax 前景ぜんけい非常ひじょう乐观,以提だかけい性能せいのう,优化よう户界めん。Ajax 现有直接ちょくせつかまち AjaxPro,以引にゅう AjaxPro.2.dll ぶんけん直接ちょくせつざいまえだい页面 JavaScript 调用きさきだい页面てき方法ほうほうただし此框あずかおもて单验证有冲突。另外ほろ软也引入りょう Ajax 组件,需要じゅよう添加てんか AjaxControlToolkit.dll ぶんけん以在ひかえけんれつひょう中出なかいで现相关控けん

优缺てん

[编辑]

使用しようAjaxてき最大さいだい优点,就是のうざい更新こうしんせい个页めんてき前提ぜんてい维护すうすえ。这使とくWeb应用ほどじょさら为迅としかい应用户动さく,并避めんりょうざい网络じょう发送些没ゆうあらため变的しんいき

Ajax需要じゅようにんなん浏览插件,ただし需要じゅようよう户允许JavaScriptざい浏览じょう执行。就像DHTML应用ほどじょ样,Ajax应用ほどじょ必须ざい众多不同ふどうてき浏览和平わへいだいじょう经过严格てき测试。ずいAjaxてき成熟せいじゅくいち些简Ajax使用しよう方法ほうほうてきほどじょ库也しょう继问どう样,也出现了另一种辅助程序设计的技术,为那些不支持しじJavaScriptまとよう提供ていきょうがえだいこうのう

对应ようAjaxさい主要しゅようてき批评就是,它可能かのうやぶ坏浏览器てききさき退すさあずか加入かにゅう收藏しゅうぞうしょくじこうのう[3]ざい动态更新こうしん页面てきじょう况下,よう户无ほうかいいたぜん一个页面状态,这是いん为浏览器仅能记下历史记录ちゅうてきせい态页めんいち个被かんせい读入てき页面あずか一个已经被动态修改过的页面之间的可能差别非常微妙;よう通常つうじょう希望きぼう单击きさき退すさ按钮,就能够取消とりけし们的まえいち操作そうさただしざいAjax应用ほどじょちゅう,却无ほう这样做。过开发者やめそうりょう种种办法らいかい决这个问题,HTML5 これまえてき方法ほうほうだいざいよう户单击后退すさ按钮访问历史记录时,つう建立こんりゅうある使用しよういち个隐ぞうてきIFRAMEじゅう现页めんじょうてき变更。(れい如,当用とうよう户在Google Mapsちゅう单击きさき退すさ时,它在いち个隐ぞうてきIFRAMEちゅう进行搜索そうさくしかきさきしょう搜索そうさく结果反映はんえいいたAjax元素げんそじょう,以便はた应用ほどじょじょう态恢复到とう时的じょう态)。

关于無法むほうはた狀態じょうたい加入かにゅう收藏しゅうぞうあるしょくじてき問題もんだいHTML5これまえてきいちしゅ方式ほうしき使用しようURLかただん标识通常つうじょうしょう锚点そくURLちゅう#きさきめんてき部分ぶぶんらい保持ほじつい蹤,まこと许用户回いた指定していてきぼう个应ようほどじょじょう态。(许多浏览まこと许JavaScript动态更新こうしん锚点,这使とくAjax应用ほどじょのう够在更新こうしん显示内容ないようてきどう时更しん锚点。)HTML5 以後いご直接ちょくせつ操作そうさりゅうらん歷史れきしなみ以字くし形式けいしきもうかそんもうぺーじ狀態じょうたいしょうもうぺーじ加入かにゅうもうぺーじ收藏しゅうぞう夾或しょくじ狀態じょうたいかいかくれがた保留ほりゅう上述じょうじゅつ兩個りゃんこ方法ほうほう也可以同解決かいけつ無法むほう後退こうたいてき問題もんだい

进行Ajax开发时,网络のべ迟——そくよう户发请求いたふく务器发出响应间的间隔——需要じゅよう慎重しんちょうこう虑。如果给予よう户明确的かい[4]ぼつゆう恰当てき预读すうすえ[5]あるもの对XMLHttpRequestてき恰当处理[6]都会とかい使用しよう户感いた厌烦[7]通常つうじょうてきかい决方あん使用しよういち个可视化てき组件らいつげ诉用户系统正ざい进行きさきだい操作そうさ并且ただしざい读取すうすえ内容ないよう

けんようせい

[编辑]

JavaScript编程てき最大さいだい问题不同ふどうてき浏览对各种技术和标准てき支持しじ

XmlHttpRequest对象ざい不同ふどう浏览ちゅう不同ふどうてき创建方法ほうほう以下いかまたがりゅうらんてき通用つうよう方法ほうほう

// Provide the XMLHttpRequest class for IE 5.x-6.x:
// Other browsers (including IE 7.x-8.x) ignore this
//   when XMLHttpRequest is predefined
var xmlHttp;
if (typeof XMLHttpRequest != "undefined") {
    xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
    var aVersions = ["Msxml2.XMLHttp.5.0", "Msxml2.XMLHttp.4.0", "Msxml2.XMLHttp.3.0", "Msxml2.XMLHttp", "Microsoft.XMLHttp"];
    for (var i = 0; i < aVersions.length; i++) {
        try {
            xmlHttp = new ActiveXObject(aVersions[i]);
            break;
        } catch (e) {}
    }
}

AJAX支持しじてき浏览ゆうInternet ExplorerChromeFirefoxOperaKonqueror及Mac OSてきSafariただしOpera支持しじXSL格式かくしき对象,也不支持しじXSLT[8]

开发挑战及解决方あん

[编辑]

对程じょ员而ごと,开发Ajax应用さい头痛てき问题莫过于以几点:

  • Ajaxざいほん质上一个浏览器端的技术,しゅさきめん临无避免てきだい一个问题即是浏览器的兼容性问题。かくいえ浏览对于JavaScriptDOMCSSてき支持しじ总有部分ぶぶんふとししょうどうあるゆうBug,甚至どう一浏览器的各个版本间对于JavaScriptDOMCSSてき支持しじ也有やゆう可能かのう部分ぶぶんいち样。这导致程じょ员在うつしAjax应用时花だい部分ぶぶんてき时间ざい调试浏览てきけんようせい而非ざい应用ほどじょ本身ほんみよし此,目前もくぜんだい部分ぶぶんてきAjax链接库或开发かまちだい以js链接库的形式けいしき存在そんざい,以定义更だか阶的JavaScript API、JavaScript对象(ばん)、あるものJavaScript Widgetsらいかい决此问题。如prototype.js。
  • Ajaxわざ术之主要しゅよう目的もくてきざい于局交换きゃく户端及服务器间的すうすえ。如同传统しゅ从架构,无可避免てきかいゆう部分ぶぶんてき业务逻辑かい实现ざいきゃく户端,ある部分ぶぶんざいきゃく户端部分ぶぶんざいふく务器。よし于业务逻辑可能かのうぶん散在さんざいきゃく户端及服务器,且以不同ふどうほどじょ语言实现,这导致Ajax应用ほどじょ极难维护。如有使用しようしゃせっこうある业务逻辑さら动需もとめさい上前うわまえいち个JavaScript/DOM/CSSけんようせい问题,Ajax应用往往おうおう变成ほどじょ员的梦魇。针对业务逻辑分散ぶんさんてき问题,Ajax开发かまちだい致可ぶん为两类:
  • はた业务逻辑及表现层ざい浏览すうすえ层放ざいふく务器:いん所有しょゆうてきほどじょ以JavaScript执行ざいきゃく户端,ただゆう需要じゅようすうすえ时才こうふく务器要求ようきゅうふく务,此法またしょう为胖きゃく户端(fat client)构。ふく务器ざい此架构下通常つうじょう仅用于提供ていきょう及储そんすうすえ。此法てきこう处在于程じょ员可以充ぶん利用りようJavaScript搭配业务逻辑らい做出特殊とくしゅてき使用しようしゃせっこう,以符合ふごう终端使用しようしゃてき要求ようきゅうただし问题也不しょう主因しゅいんざいだいいち,JavaScript语言本身ほんみ能力のうりょく可能かのう不足ふそく以处复杂てき业务逻辑。だい,JavaScriptてき执行效能こうのう一向いっこうこのみだいさん,JavaScriptそんふく务器すうすえ,仍需适当てきふく务器はしほどじょ配合はいごうだいよん,浏览けんようせいてき问题また现。ゆう些Ajax开发かまち如DWRくわだて图以生成せいせいJavaScript方式ほうしきらい避免けんようてき问题,并开りつどおりみち使とくJavaScript直接ちょくせつさけべようふく务器はしてきJavaほどじょらい简化すうすえてきそんただし前述ぜんじゅつだい一及第二两个问题仍然存在,ほどじょ员必须费相当そうとうてきりょく才能さいのう达到应用ほどじょ规格要求ようきゅうある可能かのう根本こんぽん无法达到要求ようきゅう
  • はたおもて现层、业务逻辑、及数すえ层放ざいふく务器,浏览仅有使用しようしゃせっこう引擎(User Interface engine);此法またしょう为瘦きゃく户端(thin client)构,ある中心ちゅうしんふく务器(server-centric)构。浏览てき使用しようしゃせっこう引擎仅用于反映はんえいふく务器てきひょう现层以及传达使用しようしゃてき输入かいいたふく务器てきひょう现层。よし浏览しょさわ发之事件じけんまたおくかいふく务器处理,すえ业务逻辑らい更新こうしんひょう现层,しかきさき反映はんえいかい浏览よし所有しょゆう应用ほどじょ完全かんぜんざいふく务器执行,すうすえ及表现层みな直接ちょくせつそんほどじょ员只需使用しようふく务器はししょう对较成熟せいじゅくほどじょ语言(如Java语言)そく需再がく习JavaScript/DOM/CSS,ざい开发应用ほどじょ时相对容えきかけ点在てんざい使用しようしゃせっこう引擎以及ひょう现层通常つうじょう以标じゅん组件てき形式けいしき存在そんざい,如需よう特殊とくしゅ组件(使用しようしゃせっこう)时,往往おうおう须待げんかまち开发しゃ提供ていきょう,缓不济急。如开げん码Ajax开发かまちZK目前もくぜん支持しじXUL及XHTML组件,なお无XAML支持しじ

Ajax以异てき方式ほうしきこうふく务器ひさげ交需もとめ。对服务器而言,其与传统てきひさげ交窗たい需求并无不同ふどう,而且よし于是以异方式ほうしきひさげ交,如果どう时有个Ajax需求及窗たいつつみ交需もとめはた无法证哪一个需求先获得服务器的响应。这会造成ぞうせい应用ほどじょ典型てんけいてき进程(process)ある线程(thread)てき竞争(racing)问题。ほどじょ员因此必须自ぎょう处理あるざいJavaScriptさとめん动手あし以避めん这类竞争问题てき发生(如Ajax需求响应まえさきdisable送出そうしゅつ按钮),这又必要ひつようてき增加ぞうかりょうほどじょ员的负担。目前もくぜんやめゆう动处此问题之开发かまち乎只ゆうZK[らいみなもと請求せいきゅう]

参考さんこう文献ぶんけん

[编辑]
  1. ^ 英文えいぶんAjax:もうぺーじ應用おうようほどしきてきしん方法ほうほう页面そん档备份そん互联网档あん)—Jesse James Garrett,最近さいきんそん2007ねん11月7にち
  2. ^ 英文えいぶんほろ軟XML Parser(MSXML)版本はんぽんれつひょう页面そん档备份そん互联网档あん),最近さいきんそん2007ねん11月7にち
  3. ^ 英文えいぶんWeb设计10だい错误(1999ねん页面そん档备份そん互联网档あん)—Jakob Nielsenちょ
  4. ^ 英文えいぶんRemote Scripting with AJAX, Part 2页面そん档备份そん互联网档あん
  5. ^ 英文えいぶんのべおそ必死ひっしあずか資料しりょう以降いこうていのべおそ页面そん档备份そん互联网档あん)—JonathanBoutelle.com
  6. ^ 英文えいぶん不可ふかもたれもうてきどう要求ようきゅう页面そん档备份そん互联网档あん)—Harry Fuecksちょ,2005ねん2がつ
  7. ^ 英文えいぶんしょう朋友ほうゆう們聽ちょ, AJAX怎麼こく页面そん档备份そん互联网档あん)—Marcus Bakerちょ,2005ねん6がつ3にち
  8. ^ 英文えいぶんOpera 9支援しえんてきもうぺーじ規格きかく Archive.isてきそんそん档日2012-06-04—XSLT, XPath, and XSL-FO部分ぶぶん論及ろんきゅう支持しじXSL-FOあずかXSLT,最近さいきんそん2007ねん11月7にち

外部がいぶ链接

[编辑]

工具こうぐ

[编辑]

图书

[编辑]
  • 《Ajaxもと教程きょうてい》,Foundations Of Ajaxちゅうぶんばん人民じんみん邮电出版しゅっぱんしゃ图灵公司こうし出版しゅっぱんISBN 7-115-14481-8
  • 《Ajax实战》,Ajax in Actionちゅうぶんばん人民じんみん邮电出版しゅっぱんしゃ图灵公司こうし出版しゅっぱんISBN 7-115-14717-5
  • 《Ajaxだか级程じょ设计》(だいはん),Professional Ajax人民じんみん邮电出版しゅっぱんしゃ图灵公司こうし出版しゅっぱん
  • 《Head First Ajax》O'Reilly出版しゅっぱんしゃ
  • 《Ajax實戰じっせんしゅさつほうISBN 986-181-036-6
  • 《Ajax技術ぎじゅつしゅさつほうISBN 986-181-019-6

まいり

[编辑]
  • Google Web Toolkitいちまえはし使用しようJavaScript,後端こうたん使用しようJavaてきAJAX framework,提供ていきょうWYSIWYG設計せっけいかいめん
  • jQueryよう于简AJAX开发てきJavascriptはこしき
  • Prototype AJAXはこしき
  • Yahoo! UI Library is a set of utilities and controls, written in JavaScript, for building richly interactive web applications using techniques such as DOM scripting, DHTML and AJAX.
  • Xajax知名ちめいてき開源かいげん開發かいはつAJAXようPHPはこしき
  • ZK,开放げんだい码AJAX/XULかまちJAVA專用せんよう
  • ASP.NET AJAXゆかりほろ軟專ためASP.NET應用おうようほどしきしょ開發かいはつてきAJAX基礎きそ構。
  • Web 2.0,一种新的互联网概念
  • 推送わざ,一种服务端主动通知用户的技术