我google了,但沒有找到任何答案或建議,我怎麼能計數骨幹訪客。當用戶第一次瀏覽我們的網站時,我們怎麼知道?在asp.net MVC中,我曾經把它放在global.asx
,那backbone.js怎麼樣?骨幹 - 訪客在線計數器
任何幫助將不勝感激,謝謝你..
我google了,但沒有找到任何答案或建議,我怎麼能計數骨幹訪客。當用戶第一次瀏覽我們的網站時,我們怎麼知道?在asp.net MVC中,我曾經把它放在global.asx
,那backbone.js怎麼樣?骨幹 - 訪客在線計數器
任何幫助將不勝感激,謝謝你..
您可以創建,將調用谷歌分析或將調用自己的服務,以記錄用戶活動的功能。
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。隨着您獲得專業知識,您將慢慢了解骨幹網(或者至少我是這麼做的)。
是否有任何特殊的原因要爲此使用Backbone?如果你真正想要實現一個訪問者計數器,你可以使用AJAX調用簡單的服務器端腳本,並以更少的代碼實現同樣的事情,這似乎是矯枉過正的。
說實話,我不知道如何實現它。 – Nothing
我編輯了答案,試圖向你詳細解釋。請隨時問問你是否仍然有問題。 –