Require.js&Marionette:定义包括扩展类时

Kev*_*ker 0 requirejs backbone.js marionette

我正在使用Require.js,Backbone和Marionette开发一个项目define/function,我文件顶部的调用变得有点荒谬.我想找到一种方法将"包含"移出最顶层的define块,并进入extend相关的位置.

所以我的结构大致如下:

define(['underscore','jquery','handlebars','someTemplate','someModel',etc...], function(_,$,Handlebars,template,model,etc...){
  var someView = Backbone.Marionette.ItemView.extend({
    // code here
  });
  return someView;
});
Run Code Online (Sandbox Code Playgroud)

因此,当我向文件添加更多视图时,该define列表实际上非常长.我尝试过这样的事情:

var someView = define(['someTemplate','someModel'], function(template, model){
  return Backbone.Marionette.ItemView.extend({
    // code here
  });
]);
Run Code Online (Sandbox Code Playgroud)

但是someView当我稍后调用它时,它是未定义的.我做错了,还是不可能?

And*_*rle 5

你应该拆分你的模块.拥有一个非常长的依赖项列表是一个标志,你的模块做了很多.大多数时候,所有视图需要的是模型或集合,可能还有一些子视图和全局事件总线.

还要考虑需要jQuery,Backbone等.这些是你在大多数模块中需要的东西,它更容易将它们组合在一个文件中并首先加载它们.要求使用这些文件没有多大优势,它所做的就是使你的定义部分混乱很多样板.

定义调用btw.不会返回任何someView在示例中未定义的原因.如果您真的想使用此解决方案,则必须在以后使用require时使用someView.但即便如此,放入someView自己的模块文件也要干净得多.