Backbone.js + Require.js and ViewsFactory

Backbone.js + Require.js and ViewsFactory

本文关键字:js ViewsFactory and Backbone Require      更新时间:2023-09-26

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

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

为什么不使用视图工厂呢?对于你的情况,我不确定它是否真的有用。

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

在路由器中最好的选择是使用这样的变量:

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