我是骨干新手,但已观看了几个教程截屏视频,无论是否有必要。
我的问题涉及设置结构(如果使用require和/或变量/对象结构,则都是文件结构)。
我观看的大多数教程似乎更喜欢App.Models,App.Collections和App.Views方法,并且每个项目都有模块的名称:ie,
App.Models.todo = Backbone.Model.extend({...});
App.Collections.todos = Backbone.Collection.extend({...});
App.Views.todo = Backbone.View.extend({...});
经过一番研究,试图找到一个使用我想要的风格的人,我终于找到了:File structure for a web app using requirejs and backbone。他们似乎更喜欢App。[Module Name]方法:即
App.Todo.Model = Backbone.Model.extend({...});
App.Todo.Collection = Backbone.Collection.extend({...});
App.Todo.Views = Backbone.View.extend({...});
我个人更喜欢App。[Module Name]结构,而不是让我的模块分开,但是想知道具有不同结构的好处(如果有的话)。
您使用哪种结构,以及它对您过去可能看到或使用的不同结构有何帮助?
答案 0 :(得分:1)
答案 1 :(得分:0)
如果您使用的是requireJS,则不需要/想要将模型/视图附加到附加到窗口的全局命名空间对象(无App.Views,App.Models)。使用requireJS或不同的AMD模块加载器的一个好处是你可以避免使用全局变量。
您可以定义这样的模型:
define(['underscore', 'backbone'],
function(_, Backbone) {
var MyModel = Backbone.Model.extend({});
return MyModel;
});
然后定义一个视图:
define(['underscore', 'backbone', 'tpl!templates/someTemplate.html'],
function(_, Backbone, template) {
var MyView = Backbone.View.extend({});
return MyView;
});
现在你有一个没有全局变量的模型和视图。然后,如果某个其他模块需要创建其中一个(可能是您的App模块),则将其添加到define()
数组中,然后就可以了。