【问题标题】:Backbone general router vs. separate routing files?骨干通用路由器与单独的路由文件?
【发布时间】:2014-05-03 19:01:29
【问题描述】:

我发现大多数教程都使用一个大路由器。 例如:https://github.com/thomasdavis/backboneboilerplate/blob/gh-pages/js/router.js

将路由(控制器)分成单独的文件不是更好吗?

如果是,我该如何将它与 requirejs 结合使用?

【问题讨论】:

    标签: backbone.js requirejs


    【解决方案1】:

    我认为这是一个偏好问题。如果你正在用无数条路由做一个巨大的应用程序,那么将你的路由器分开是明智的。对于只有一个大路由器的小型应用程序就可以了。

    如果您决定拥有多个路由器,请确保您没有冲突的路由,以免出现任何意外行为或错误。

    所以使用 requireJS:我认为最好的方法是像这样在自己的文件中定义每个路由器

    define([blaa, blaa], function(Blaa, Blaa) {
    
      var SubRouter1 = Backbone.Router.extend({
    
        // work your routing magic here, remember to make no conflicting routes
    
      });
    
      return SubRouter1;
    });
    

    当您设置好所有所需的路由器后,您可以将它们捆绑在 app.js

    define([...,'subrouter1', 'subrouter2', ... , 'subrouterN', ...],
    function(..., SubRouter1, SubRouter2, ... , SubRouterN, ...) {
    
      // work your app magic here
    
      initialize: function() { // or wherever you start your application
        subrouter1 = new SubRouter1();
        subrouter2 = new SubRouter2();
        ...
        ...
        subrouterN = new SubRouterN();
        Backbone.history.start(); // remember to start the history 
      },
    
      // maybe work some more magic?
    });
    

    我自己从来没有这样做过,但我不明白为什么如果你让路线不发生冲突,它为什么行不通。希望这可以为您清除问题。

    【讨论】:

      【解决方案2】:

      检查Backbone.js "fat router" design conundrum :您可以在那里找到@jakee 答案以及更多选项

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多