為什么要Unobtrusive
- 首先,這不是必須的
- 大部分開發(fā)者都沒有在用
- 一些比較值得一提的例子:
- Google Maps (maps.google.com)
- TWERQ (twerq.com)
- Marlboro (marlboro.com)
Unobtrusive開發(fā)的優(yōu)勢
- 代碼更佳簡潔,并且易于維護
- 易讀和易懂意味著更容易修改
- 修改全部的樣式僅僅需要修改CSS文件
- JavaScript能夠很容易的修改
- HTML的修改變得更加保險
- 能夠提高可訪問性(accessibility)
- 可訪問性意味著所有人都可以訪問你的內(nèi)容
- 你不能揣測所有人
- 但你可以肯定的是所有瀏覽器都能夠處理HTML
- 大約10%的訪問者是不能夠使用JavaScript功能(www.w3schools.com/browsers/browsers_stats.asp)
- 有些人使用的是屏幕閱讀器,有些人無法使用鼠標(biāo)
- 有利于搜索引擎優(yōu)化
- 搜索爬蟲無法解釋CSS和JavaScript
- 搜索爬蟲只會順著
<a>
繼續(xù)爬行 - JavaScript和Flash中的內(nèi)容無法被搜索到
- 更多的內(nèi)容,更結(jié)構(gòu)化的HTML,使得頁面相關(guān)性更高
不過有時,不得不使用JavaScript
- 當(dāng)然,離了JavaScript,JavaScript游戲肯定無法運行
- 很多Web統(tǒng)計服務(wù)的腳本依賴于JavaScript
- Google Ads需要JavaScript
- 對于Unobtrusive,只要盡量做到就好了
如何進行Unobtrusive的開發(fā)
不要去問別人,直接去做
從沒有JavaScript開始入手
- 使用帶有鏈接和表單的純HTML
- 使用CSS來實現(xiàn)hover和滾動效果
- 使用HTTP的功能(比如用”Location”頭來轉(zhuǎn)向)
重視鏈接
- 頁面上的所有鏈接,離了JavaScript都應(yīng)該能夠正常工作
- 這也意味著不使用
javascript:
偽協(xié)議 - 甚至不要使用
<a href="#">
- 如果有鏈接一定要使用JavaScript,那么就用JavaScript來把鏈接添加到頁面中
為CSS和JavaScript提供hook
- 給一個頁面中唯一的元素加上ID
- 給重復(fù)使用的元素加上class
- 使用列表等其他有語義的結(jié)構(gòu)
使用可靠的技術(shù)
- 從純HTML和CSS開始
- 動態(tài)的為鏈接和表單添加高級交互功能
- 同時通過HTML和JSON/XML兩種方式提供內(nèi)容
- 為有或沒有JavaScript的情況提供額外的CSS
- 為有JavaScript和無JavaScript的用戶提供不同的應(yīng)用
我的看法
Unobtrusive應(yīng)該是對Web Standards的進一步深化,也可以理解為Web Standards的一個方面。但是,這種開發(fā)方式目前仍然是一種比較理想化的方式,也許在個人,或者小團隊的開發(fā)中可以貫徹的很好。但是到了大型項目中,嚴格的執(zhí)行未必是一種高效的方式。盡管代碼的易維護性顯而易見,但是大部分項目的前端代碼不一定有維護(或者大量維護)的需求,而項目要求的更多是能夠在最短時間內(nèi)完成。
然而,Unobtrusive絕對是一個具有指導(dǎo)性的Web前端開發(fā)方式,實現(xiàn)得越接近,無論是對用戶,還是對開發(fā)者,甚至對計算機,都會更有好處。
經(jīng)典論壇討論:
http://bbs.blueidea.com/thread-2809388-1-1.html