## Backbone.history
**History** 作為全局路由服務用于處理 `hashchange` 事件或 `pushState`,匹配適合的路由,并觸發回調函數。 我們不需要自己去做這些事情 — 如果使用帶有鍵值對的 路由,`Backbone.history` 會被自動創建。
Backbone 會自動判斷瀏覽器對 **pushState** 的支持,以做內部的選擇。 不支持 `pushState` 的瀏覽器將會繼續使用基于貓點的 URL 片段, 如果兼容 `pushState` 的瀏覽器訪問了某個 URL 貓點,將會被透明的轉換為真實的 URL。 注意使用真實的 URLs 需要 web 服務器支持直接渲染那些頁面,因此后端程序也需要做修改。 例如,如果有這樣一個路由 `/document/100`,如果瀏覽器直接訪問它, web 服務器必須能夠處理該頁面。 趨于對搜索引擎爬蟲的兼容,讓服務器完全為該頁面生成靜態 HTML 是非常好的做法 ... 但是如果要做的是一個 web 應用,只需要利用 Javascript 和 Backbone 視圖將服務器返回的 REST 數據渲染就很好了。
**start**`Backbone.history.start([options])`
當所有的 [Routers](#Router) 創建并設置完畢,調用 `Backbone.history.start()` 開始監控 `hashchange` 事件并分配路由。后續調用`Backbone.history.start()`會拋出一個錯誤, 并且`Backbone.History.started`是一個布爾值,指示是否已經被調用。
需要指出的是,如果想在應用中使用 HTML5 支持的 `pushState`,只需要這樣做:`Backbone.history.start({pushState : true})` 。如果你想使用`pushState`的話, 對于那些本身不支持它的瀏覽器,需要用整頁刷新代替, 您可以添加`{hashChange: false}`到選項。
如果應用不是基于域名的根路徑 `/`,需要告訴 History 基于什么路徑: `Backbone.history.start({pushState: true, root: "/public/search/"})`
當執行后,如果某個路由成功匹配當前 URL,`Backbone.history.start()` 返回 `true`。 如果沒有定義的路由匹配當前 URL,返回 `false`。
如果服務器已經渲染了整個頁面,但又不希望開始 History 時觸發初始路由,傳入 `silent : true` 即可。
因為在Internet Explorer中基于hash的歷史記錄依賴于`<iframe>`,因此需要確定DOM已準備就緒后再調用 `start()` 。
```
$(function(){
new WorkspaceRouter();
new HelpPaneRouter();
Backbone.history.start({pushState: true});
});
```