RESTful php Web服务和BackboneJS

时间:2014-07-04 22:18:28

标签: php rest backbone.js

有一个基于php构建的RESTful Web服务。目前,它仅用于移动应用程序。我需要使用相同的API构建Web应用程序。我认为这将是一个基于BackboneJS的单页面应用程序。后端由Zend Framework 2驱动。

之前我曾与BackboneJS合作,但我是创建SPA的完全初学者。我关心的第一件事是如何在一个新的"页面"中将所有模型和集合与一个请求同步到Web服务。请求。例如,我的应用程序中的第一页将是登录页面。很明显,此时所有必需的数据都将加载页面。但是,一旦用户登录,我需要"重定向"他是一个仪表板,这是一个完全不同的页面,具有不同的布局和东西。我想到的一个解决方案是向Web服务发出特殊请求,其中包含引导页面所需的API URL列表。该服务将解析请求并在内部调用每个api所需的控制器并准备响应。我不知道如何处理模板。使用单个请求提取所有必需模板的最佳方法是什么?

我将非常感谢有关此主题的任何帮助和建议。

1 个答案:

答案 0 :(得分:0)

我发现使用Backbone路由器来设置一个页面路由,它传递一个url splat,如下所示:

routes: {
    '*page' : 'page'
}

page: function (page) {
    customEvent.trigger('router:changed:page', page);
}

通过这种方式,您可以触发一个事件来表示页面已更改,并将充当其他视图的钩子以进行渲染和初始化。然后,您可以创建一个页面模块来初始化正确的视图,如下所示:

define(['backbone'], function (Backbone) {
    var PageModule = Backbone.View.extend({
        el: $('#main'), // main container

        initialize: function () {
            this.listenTo(customEvent, 'router:changed:page', this.render);
        },

        render: function (page) {
            this.$el.empty(); // empty the view each time

            switch(page) {
                case 'dashboard':
                    // load dashboard view
                    break;
                case 'other':
                    // load other view
                    break;
            }

            return this;
        }
    });
});

然后,每个视图都会加载它可能需要的所有模板和子视图。

define(['backbone', 'insertTemplate', 'collection'], function (Backbone, InsertTemplate, Collection) {

      var DashboardView = Backbone.View.extend({
          // do your view magic in here but as you can see you have access to a template and collection but you could add as many items as required.
      });

      return DashboardView;
});

页面模块成为一种工厂方法。

我建议看一下像Marionette或Layout Manager这样的框架,因为它可以帮助解决这个问题。

这是一个粗略的例子,希望能让你思考。还有其他一些方法可以做到,但这是一个开始。