Backbone.js + Require.js和ViewsFactory

时间:2015-08-03 12:31:23

标签: javascript backbone.js requirejs

我们假设我们有这样的测试代码:

var App = (function () {

    var api = {
        Router: null,
        init: function () {
            this.content = $("#content");
            Backbone.history.start();
            return this;
        }
    };

    var ViewsFactory = {


        view1: function () {
            var model1 = new model1();
            return new api.Views.View1({
                model: model1
            });
        },

        view2: function () {
            var model2 = new model2();
            return new api.Views.View2({
                model: model2
            });
        },

        view3: function () {
            var model3 = new model3();
            return new api.Views.View3({
                model: model3
            });
        },


    };

    var Router = Backbone.Router.extend({
        routes: {
            "": "view1",
            "2": "view2",
            "3": "view3",
        },

        view1: function () {
            var view1 = ViewsFactory.view1();
            $(".content").html(view1.render().el);
        },  

        view2: function () {
            var view2 = ViewsFactory.view2();
            $(".content").html(view2.render().el);
        },

        view3: function () {
            var view3 = ViewsFactory.view3();
            $(".content").html(view3.render().el);
        },

    });

    api.Router = new Router();

    return api;
})();

我想使用Require.js。请不要关注名字,而应关注这个想法。

  1. 如果我理解正确,我必须在每个视图(View1,View2,View3)和每个模型(Model1,Model2,Model3)中包含require方法。但是在这种情况下使用Require.js而不是传统的<script>标签的目的是什么?
  2. 在骨干项目中使用ViewsFactory是一个很好的做法吗?

2 个答案:

答案 0 :(得分:1)

为什么不是视图工厂。在你的情况下,我不确定它是否真的有用。

requirejs将有助于构建可重用的模块。 http://requirejs.org/docs/why.html

答案 1 :(得分:0)

路由器中的最佳选择是使用如下变量:

 var $ = require('jquery'),
     Backbone    = require('backbone');