2012-12-31 202 views
3

由於骨幹網提供了對某些事件做出迴應的兩種方式,所以我想知道一般的共識是什麼。這是一個很常見的情況 - 我有一個頁面上的鏈接,我可以設置HREF頁面路由就可以使路由器可以調用一個函數來處理它,就像這樣:骨幹事件或路由?

HTML

<a href='#posts/2' class='handleInView'>Item 2</a> 

JS

 
var AppRouter = Backbone.Router.extend({ 
     routes: { 
      "posts/:id": "getPost" 
     } 
    }); 

或者我可以向事件中查看像這樣迴應:

 
var MyView = Backbone.View.extend({ 
    ... 
    events: { 
    "click .handleInView":   "open", 
    }, 

    ... 

    open: function() { 
     ... 
    } 

}); 

我知道路線爲您提供歷史和直接鏈接的額外好處,但從性能角度和代碼佈局角度來看,如果我不關心歷史,那麼更好的方法是什麼。

我的路線可能是一個地方,我可以看到所有的互動,但它也可能很快得到混亂。

回答

1

如果你不關心歷史或書籤,活動較少副作用(人不會嘗試書籤他們,他們不會與你的歷史干擾),他們是簡單/更快地實現和處理。

性能明智的,他們稍快是也(但真的沒有方法是緩慢的,足以在所有的物質)。

0

我同意評論。任何需要深度鏈接,書籤等的東西都應該通過使用路線來處理。但是,如果你有像TabView這樣的東西,或者其他視圖應該無法從URL訪問,並且嵌套在另一個視圖中,那麼在處理視圖代碼內部時可能更有意義。至於混亂,你可能想考慮將你的路線重新組織成單獨的文件。下面是一些例子

Backbone general router vs. separate routing files?

Multiple routers vs single router in BackboneJs

0

在一般情況下,當你調用你的應用程序的狀態的急劇變化路由使用,或者你想保持瀏覽歷史記錄(通過骨幹.history),因此用戶可以通過瀏覽器按鈕在狀態之間導航返回&。

理想情況下,您可以在不同情況下使用兩者。

我喜歡根據我的網頁上發生的變化來考慮它。如果一般頁面狀態相同,但某些元素正在更改或更新,我將使用事件。如果一般頁面狀態正在改變,或者如果我正在加載不同的UI屏幕,我將使用路由。