【问题标题】:RequireJs: Where to put global configuration for modules/librariesRequireJs:在哪里放置模块/库的全局配置
【发布时间】:2014-03-10 13:42:25
【问题描述】:

我正在使用 requirejs 创建一个 Marionette Web 应用程序。我重写了 maronette 视图渲染器以支持我的自定义模板对象,如下所示:

Marionette.Renderer.render = function(template, data){
   return template.render(data);
};

此配置对所有视图都是全局的。 我的问题是:在哪里放置此代码(以及类似这样的配置 - 主干中覆盖“同步”功能的示例)保持通过 requirejs 获得的模块化的最佳位置?

我能想到的选项是:

  • 只需将其放在应用程序或主文件中 - 似乎是一种快速而肮脏的方式
  • 将所有库的所有自定义配置放在一个配置文件中并需要它。
  • 制作一个类似 MarionetteConfig 或 BackboneConfig 的文件,并将特定于该库的配置放入该文件并需要该文件。

有什么更好的方法?

谢谢..

【问题讨论】:

  • 我把它放在主文件中,但需要一个外部配置文件可能会更好。
  • @Puigcerber :感谢您的建议,您是为所有库推荐一个配置文件还是为每个库推荐一个配置文件?
  • 可能是一个用于库的库,将它们全部放在某种文件夹中,例如 utils 或 helpers。然后,您可以将所有这些文件作为依赖项添加到您的 shim 配置中。

标签: javascript backbone.js requirejs marionette


【解决方案1】:

使用require.config 为您的模块提供配置。

您要求的不是配置问题。更多关于如何扩展模块。

应通过指定自定义模块来将库扩展为 Marionette 或 Backbone。我建议为每个库编写一个模块。

define('myBackbone', ['vendor/backbone', 'vendor/underscore'], function(Backbone, _) {
  Backbone.View.prototype.render = function() {
    console.log('My Custom view');
  }
  // Or doing it the Backbone/Underscore way
  //_.extend(Backbone.View.prototype, {
  //  render : function() {
  //    console.log('My Custom view')
  //  }
  //});
  return Backbone;
});

然后在你的模块中使用 myBackbone。

define('myModule', ['myBackbone'], function(Backbone) {
  return Backbone.View.extend({...});
});

顺便说一句。除了使用您的应用程序逻辑扩展库之外,您还可以创建一个 abstract view 并扩展您的视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    相关资源
    最近更新 更多