2015-10-16 71 views
1

我使用Marionette.js框架,我需要覆蓋Marionette.TemplateCache模塊的功能,但不更新marionette.js文件。 所以,我創建了一個新的模塊是:如何使用requirejs覆蓋供應商庫

define(['marionette'], function (Marionette) { 
    'use strict'; 

    _.extend(Marionette.TemplateCache.prototype, { 
     loadTemplate: function(templateId){ 

      var template = templateId; 

      if (!template || template.length === 0){ 
       throwError("Could not find template: '" + templateId + "'", "NoTemplateError"); 
      } 

      return template; 
     } 
    }); 
    return Marionette; 
}); 

但是,我不知道如何配置我的requirejs主,因爲當我加載Marionette.js框架,我模塊覆蓋Marionette.js 。

你有什麼想法如何做到這一點?

謝謝。

Jonathan。

回答

2

可以重命名爲原始庫中定義的東西的路徑類似marionette-core和更新模塊如下

define(['marionette-core'], function (Marionette) { 
'use strict'; 

    _.extend(Marionette.TemplateCache.prototype, { 
    loadTemplate: function(templateId){ 

     var template = templateId; 

     if (!template || template.length === 0){ 
      throwError("Could not find template: '" + templateId + "'", "NoTemplateError"); 
     } 

     return template; 
    } 
    }); 

    return Marionette; 
}); 

現在作爲marionette定義你的模塊的路徑。

所以現在當你需要marionette時,require.js會加載原來的marionette並返回你的自定義實例。

另外,您還可以使用marionette-core別的地方如果有必要

+0

謝謝您的回答載入原始庫。 您的解決方案工作正常,但我不滿意它,因爲它不是模塊化解決方案。 如果我們需要在另一個文件中定義另一個插件,我們必須在插件和插件之間建立依賴關係,我不想這樣做。 –