統一資源定位符
Uniform Resource Locator
URLs是通用的,任何具備一點技術概念的使用者,都能憑記憶瀏覽你網站的90%
要達成這點,你的URL結構必須是實用的──簡單規則組合成能導向正確頁面的邏輯體系
頂層結構是黃金地段
使用命名空間來擴展URL
例如https://github.com/defunkt/resque/issues中的defunkt/resque
能讓這個區段之後的所有內容都成為新的頂層分支
保持命名空間的一致性,不要有的放在/feature/<user>/<repo>,有的放在/<user>/<repo>/feature
Querystrings適合用於篩選與排序
遵循統一格式(例如sort=alpha&dir=desc),能讓使用者輕鬆記住並操作
但頁面應該在沒有querystrings時仍能正常顯示
避免在英文網站的網址中使用非ASCII字元
URL是給人看,不是給搜尋引擎看的
http://guitars.example.com/best-guitars/cheap-guitars/popular-guitar
Google已經在2003年取消了這類網址的排名優勢
不要使用底線_,使用連字號-即可
使用簡短、清楚、常見的詞彙
如果你需要加特殊符號,代表那個詞太長了
URL是一種協議
承諾在可預測的位址長期提供某個資源
只要有使用者第一次拜訪某個 URL,你就和他默默簽下了契約
如果他把頁面加入書籤或重新整理,他應該看到相同的內容
不要在上線後隨意更改URL
每個畫面都應該有URL
網站上的每一個畫面都應該能對應到一個URL
讓使用者能複製貼上、在另一個分頁或裝置上打開並看到相同內容
HTML5的新History API出現,讓這變得可能
更改歷史記錄中的目前網址,不影響返回鍵
只改變顯示(例如排序或篩選)
新增歷史記錄、更改目前網址,會影響返回鍵
產生新內容(例如分頁導覽)
連結應該運作得像連結
不要在使用onReplaceState或onPushState時,破壞<a>與<button>本身的功能 把AJAX請求的目標放在<a>的href屬性中
在JavaScript點擊事件中對中鍵或Command鍵回傳true
應該在點擊的handler中進行簡單的條件處理,例如
code:javascript
$('a.ajaxylink').click(function(e){
// Fallback for browser that don't support the history API
if (!('replaceState' in window.history)) return true
// Ensure middle, control and command clicks act normally
if (e.which == 2 || e.metaKey || e.ctrlKey){
return true
}
// Do something awesome, then change the URL
window.history.replaceState(null, "New Title", '/some/cool/url')
return false
})
「POST專屬URL」該消失了
例如在表單送出之後短暫存在的URL
應該只用於重新導向或API,而不是交給使用者