我用谷歌搜索但没有找到任何答案或建议,我怎么能算上骨干的访客。当用户第一次浏览我们的网站时,我们怎么知道呢。在asp.net MVC中,我曾经把它放在global.asx
中,backbone.js怎么样?
非常感谢任何帮助,谢谢..
答案 0 :(得分:1)
您可以创建一个调用Google Analytics或将调用您自己的服务来记录用户活动的函数。
function OnUserAction(router, route, params){
//DO SOMETHING
}
拥有该功能后,您可以使用route
事件执行该功能。来自主干的documentation:
“route”(路由器,路线,参数) - 任何路线都有历史记录 已匹配。
这允许您将事件绑定到匹配的路由。
如果要绑定到所有事件,请绑定到“all”:
myRouter.bind("all", OnUserAction);
因此,每次用户导航时,都会执行跟踪代码。要知道您是否第一次不是那么容易,但谷歌分析“返回用户”信息将为您完成工作。
<强> EDITED 强>
我将添加更多细节以尝试解释如何实现它。我不知道你的骨干水平目前是什么,但是你应该知道骨干遵循一个非常类似于MVC的架构,它是事件驱动的。这意味着应用程序中的所有内容都是由事件启动的,模块之间的通信也是通过事件完成的。
在主干中,你永远不应刷新整个页面或导航到新页面,应该通过Ajax按需加载和更新所有内容(我之前wrote有关它的更多细节)。因此,当URL更改时,它将触发客户端中的某些事件。该事件可能有一个处理程序,它将调用您的ASP服务器,但也可能不会调用它。
在骨干网中,有一个框架组件可以观察URL更改并在事件发生时触发事件。该组件称为Router。默认情况下,每次URL更改时,事件route
都会被触发,因此您可以将OnUserAction
之类的事件处理程序绑定到该事件。
您需要确保事件OnUserAction
的处理程序(route
)能够记录用户访问。
// 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。当你获得专业知识时,你会慢慢了解骨干(或者至少就是我的方式)。
答案 1 :(得分:0)
您是否有任何特殊原因想要使用Backbone?如果你真正想做的就是实现一个访问者计数器,那么你可以使用AJAX调用简单的服务器端脚本,并用更少的代码实现相同的功能。