骨干 - 访客在线柜台

时间:2014-01-10 10:17:53

标签: javascript jquery ajax backbone.js

我用谷歌搜索但没有找到任何答案或建议,我怎么能算上骨干的访客。当用户第一次浏览我们的网站时,我们怎么知道呢。在asp.net MVC中,我曾经把它放在global.asx中,backbone.js怎么样?

非常感谢任何帮助,谢谢..

2 个答案:

答案 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调用简单的服务器端脚本,并用更少的代码实现相同的功能。