2014-01-10 77 views
-1

我google了,但沒有找到任何答案或建議,我怎麼能計數骨幹訪客。當用戶第一次瀏覽我們的網站時,我們怎麼知道?在asp.net MVC中,我曾經把它放在global.asx,那backbone.js怎麼樣?骨幹 - 訪客在線計數器

任何幫助將不勝感激,謝謝你..

回答

1

您可以創建,將調用谷歌分析或將調用自己的服務,以記錄用戶活動的功能。

function OnUserAction(router, route, params){ 
    //DO SOMETHING 
} 

一旦你有了這個功能,你可以使用route事件來執行它。從骨幹documentation

「路線」(路由器,路由,則params) - 當所有航線已經 被匹配歷史觸發。

這允許您將事件綁定到匹配的路由。

如果你要綁定的所有活動,結合「全」:

myRouter.bind("all", OnUserAction); 

所以每次用戶導航跟蹤代碼就會被執行。要知道是否是第一次,你是不是很容易,但谷歌分析「返回用戶」的信息將爲你做的工作。

EDITED

我要添加更多的細節,試圖解釋如何實現它。我不知道目前您的骨幹級別是什麼,但您應該知道骨幹遵循的是與MVC非常相似的架構,並且是事件驅動的。這意味着應用程序中的所有內容都是由事件啓動的,模塊之間的通信也是通過事件完成的。

骨幹你永遠不應該刷新整個頁面或導航到一個新的頁面,應該通過Ajax(我之前wrote關於它的更多細節)加載和更新所有內容。所以當URL改變時它會在客戶端觸發一些事件。該事件可能會有一個處理程序調用您的ASP服務器,但可能不會調用它。

骨幹網中有一個框架組件,它可以觀察URL變化並在事件發生時觸發事件。該組件被稱爲Router。默認情況下,每次URL更改事件route都會觸發,因此您可以將事件處理程序(如OnUserAction)綁定到該事件。

您需要確保事件route的處理程序(OnUserAction)將執行某些操作以記錄用戶訪問。

// Define our App and its components 
App = { 
    Models: {}, 
    Collections: {}, 
    Views: {}, 
    Router: {} 
}; 

// Create the app router with a default action 
// called index for blank ('') route 
App.Router = Backbone.Router.extend({ 
    routes: { 
    '': 'index' 
    }, 

    index: function(){ 
    alert("Index route has been called.."); 
    } 

}); 

//Route changes logic (route event handler) 
function OnUserAction(router, route, params){ 
    // I don't know how are you planing to count the visits 
    // one way would be to have in the server side an action 
    // that will store the user visits (like in the my example) 
    // another way would be to post it to google analytics 
    $.post(
    "/UserVisit/PlusOne", // This action will log visits in the database 
    { url : route, args : params }, 
    function(data){ 
     console.log('/UserVisit/PlusOne executed with NO errors!'); 
    } 
    ); 
} 

// Tell the router that we want to execute OnUserAction on route event 
App.Router.bind("route", OnUserAction); 

如果您發現骨幹難以理解,您可能會發現有用的chaplin.js。 Chapli.js包裝並簡化了backbone.js。隨着您獲得專業知識,您將慢慢了解骨幹網(或者至少我是這麼做的)。

+0

說實話,我不知道如何實現它。 – Nothing

+0

我編輯了答案,試圖向你詳細解釋。請隨時問問你是否仍然有問題。 –

0

是否有任何特殊的原因要爲此使用Backbone?如果你真正想要實現一個訪問者計數器,你可以使用AJAX調用簡單的服務器端腳本,並以更少的代碼實現同樣的事情,這似乎是矯枉過正的。