名詞解釋
漸進(jìn)增強(qiáng)(Progressive Enhancement):一開(kāi)始就針對(duì)低版本瀏覽器進(jìn)行構(gòu)建頁(yè)面,完成基本的功能扭勉,然后再針對(duì)高級(jí)瀏覽器進(jìn)行效果涂炎、交互、追加功能達(dá)到更好的體驗(yàn)唱捣。相當(dāng)于 向上兼容
優(yōu)雅降級(jí)(Graceful Degradation):一開(kāi)始就構(gòu)建站點(diǎn)的完整功能,然后針對(duì)瀏覽器測(cè)試和修復(fù)垫竞。比如一開(kāi)始使用 CSS3 的特性構(gòu)建了一個(gè)應(yīng)用欢瞪,然后逐步針對(duì)各大瀏覽器進(jìn)行 hack 使其可以在低版本瀏覽器上正常瀏覽。相當(dāng)于 向下兼容
其實(shí)漸進(jìn)增強(qiáng)和優(yōu)雅降級(jí)并非什么新概念遣鼓,只是舊的概念換了一個(gè)新的說(shuō)法骑祟。在傳統(tǒng)軟件開(kāi)發(fā)中气笙,經(jīng)常會(huì)提到向上兼容和向下兼容的概念。漸進(jìn)增強(qiáng)相當(dāng)于向上兼容缸棵,而優(yōu)雅降級(jí)相當(dāng)于向下兼容谭期。向下兼容指的是高版本支持低版本的或者說(shuō)后期開(kāi)發(fā)的版本支持和兼容早期開(kāi)發(fā)的版本隧出,
向上兼容的很少。大多數(shù)軟件都是向下兼容的胀瞪。
二者區(qū)別
優(yōu)雅降級(jí)和漸進(jìn)增強(qiáng)只是看待同種事物的兩種觀點(diǎn)凄诞。優(yōu)雅降級(jí)和漸進(jìn)增強(qiáng)都關(guān)注于同一網(wǎng)站在不同設(shè)備里不同瀏覽器下的表現(xiàn)程度。關(guān)鍵的區(qū)別則在于它們各自關(guān)注于何處摸柄,以及這種關(guān)注如何影響工作的流程既忆。
優(yōu)雅降級(jí)觀點(diǎn)認(rèn)為應(yīng)該針對(duì)那些最高級(jí)嗦玖、最完善的瀏覽器來(lái)設(shè)計(jì)網(wǎng)站宇挫。而將那些被認(rèn)為“過(guò)時(shí)”或有功能缺失的瀏覽器下的測(cè)試工作安排在開(kāi)發(fā)周期的最后階段器瘪,并把測(cè)試對(duì)象限定為主流瀏覽器(如 IE、Mozilla 等)的前一個(gè)版本橡疼。在這種設(shè)計(jì)范例下欣除,舊版的瀏覽器被認(rèn)為僅能提供“簡(jiǎn)陋卻無(wú)妨 (poor, but passable)” 的瀏覽體驗(yàn)挪略。你可以做一些小的調(diào)整來(lái)適應(yīng)某個(gè)特定的瀏覽器杠娱。但由于它們并非我們所關(guān)注的焦點(diǎn),因此除了修復(fù)較大的錯(cuò)誤之外摊求,其它的差異將被直接忽略睹簇。
漸進(jìn)增強(qiáng)觀點(diǎn)則認(rèn)為應(yīng)關(guān)注于內(nèi)容本身太惠。內(nèi)容是我們建立網(wǎng)站的誘因疲憋。有的網(wǎng)站展示它,有的則收集它埃脏,有的尋求彩掐,有的操作灰追,還有的網(wǎng)站甚至?xí)陨系姆N種狗超,但相同點(diǎn)是它們?nèi)忌婕暗絻?nèi)容努咐。這使得漸進(jìn)增強(qiáng)成為一種更為合理的設(shè)計(jì)范例殴胧。
如何抉擇
如果軟件開(kāi)發(fā)的預(yù)算和時(shí)間充足,就不存在抉擇的問(wèn)題竿屹。然而現(xiàn)實(shí)很殘酷羔沙,要么開(kāi)發(fā)周期短厨钻,要么開(kāi)發(fā)預(yù)算少,或者二者兼而有之夯膀,這個(gè)時(shí)候該如何抉擇?就我個(gè)人而言蝴蜓,講講我的觀點(diǎn)俺猿。
根據(jù)你的用戶(hù)所使用的客戶(hù)端的版本來(lái)做決定押袍。請(qǐng)注意我的措辭,我沒(méi)有用瀏覽器汽馋,而是用客戶(hù)端圈盔。因?yàn)闈u進(jìn)增強(qiáng)和優(yōu)雅降級(jí)的概念本質(zhì)上是軟件開(kāi)發(fā)過(guò)程中低版本軟件與高版本軟件面對(duì)新功能的兼容抉擇問(wèn)題驱敲。服務(wù)端程序很少存在這種問(wèn)題,因?yàn)殚_(kāi)發(fā)者可以控制服務(wù)端運(yùn)行程序的版本木缝,就無(wú)所謂漸進(jìn)增強(qiáng)和優(yōu)雅降級(jí)的問(wèn)題。但是客戶(hù)端程序則不是開(kāi)發(fā)者所能控制的(你總不能強(qiáng)制用戶(hù)去升級(jí)它們的瀏覽器吧)放案。我們所謂的客戶(hù)端吱殉,可以指瀏覽器厘托,移動(dòng)終端設(shè)備(如:手機(jī),平板電腦押赊,智能手表等)以及它們對(duì)應(yīng)的應(yīng)用程序(瀏覽器對(duì)應(yīng)的是網(wǎng)站流礁,移動(dòng)終端設(shè)備對(duì)應(yīng)的是相應(yīng)的APP)神帅。
現(xiàn)在有很成熟的技術(shù)萌抵,能夠讓你分析使用你客戶(hù)端程序的版本比例。如果低版本用戶(hù)居多霎桅,當(dāng)然優(yōu)先采用漸進(jìn)增強(qiáng)的開(kāi)發(fā)流程滔驶;如果高版本用戶(hù)居多住闯,為了提高大多數(shù)用戶(hù)的使用體驗(yàn)比原,那當(dāng)然優(yōu)先采用優(yōu)雅降級(jí)的開(kāi)發(fā)流程杠巡。
然而事實(shí)情況是怎么樣的呢?絕大多數(shù)的大公司都是采用漸進(jìn)增強(qiáng)的方式蚌铜,因?yàn)闃I(yè)務(wù)優(yōu)先,提升用戶(hù)體驗(yàn)永遠(yuǎn)不會(huì)排在最前面囚痴。但也不是沒(méi)有反例审葬。如果你開(kāi)發(fā)的是一款面向青少年的軟件(或網(wǎng)站)涣觉,你知道這個(gè)群體的人總是喜歡嘗試新事物官册,總是喜歡酷炫的特效,總是喜歡把它們的軟件更新到最新版本(而不像我們老一輩的用戶(hù))鸦难。面對(duì)這種情況明刷,漸進(jìn)增強(qiáng)的開(kāi)發(fā)流程實(shí)為上選辈末。