2011-12-10 24 views
1

由於下劃線裝入作爲AMD模塊沒有任何人有關於如何最好地對設置下劃線全局選項,這樣我仍然可以訪問它的下一個建議使用時相同的統一模塊名稱,並有我的覆蓋可用。重寫underscore.js默認與require.js作爲AMD模塊

我與它玩耍了,到目前爲止,我基本上有一個包裝中,我強調包括作爲扶養,讓我修改,然後返回修改後的下劃線。

paths: { 
    'underscore': 'libs/underscore/1.2.3/underscore', 
    'underscore-override': 'libs/underscore/define' 
} 

裏面define.js我主要有以下幾個:

define(['underscore'], function (_) { 

    // use mustache syntax 
    _.templateSettings = { 
     interpolate : /\{\{(.+?)\}\}/g 
    }; 

    return _; 

}); 

這種方法的作品,但我敢肯定有一個更優雅的方式來做到這一點,這樣我就不必使用'underscore-custom'。

有什麼建議嗎?

乾杯:-)

更新:根據中接受的答案我現在做以下建議:

庫/ bootstrap.js

define([ 
    // add custom library defines here 
    '../libs/underscore/define' 
], function() { 

    var libs = [].slice.call(arguments), 
     initialize = function() { 
      libs.forEach(function (lib) { 
       if (typeof lib === 'function') { 
        lib(); 
       } 
      }); 
     } 

    return { 
     initialize : initialize 
    } 

}); 

庫/下劃線/限定

define(['underscore'], function(_) { 
    return function() {  
     // add custom settings here 
    }; 
}); 

main.js

require(['libs'], function(libs){ 
    libs.initialize(); 
}); 

回答

2

你可能有加載在任何需要配置一個配置模塊。

define(['underscore', 'jquery'], function(_, jQuery){ 
    var setUp = function(){ 
    // Underscore Configuration 
    _.templateSettings = {}; 

    // jQuery Configuration 
    $.someplugin = {}; 
    }; 
    return { setUp: setUp }; // or something like that 
}); 

//main.js 
define(['configurator'], function(config){ 
    config.setUp(); 
}); 
+0

感謝您的回答,我曾考慮類似這樣的事情,但我希望將下劃線和/或jQuery特定選項本地化爲各自的自包含定義。 但是,這種方法可以爲將來的配置變化提供範圍。 – indieisaconcept

+0

所以看起來像我搞砸了上面,我想說的是: 於是我就用這個,但它扭捏支持自包含庫設置。 我基本上現在有一個引導包括我的圖書館,我用它來註冊自定義配置。我需要重寫或添加選項的每個庫我創建一個自定義並在引導中引用它。 自舉暴露的初始化函數,然後我在我的main.js.調用 可能超過抽象但似乎工作到目前爲止。謝謝你的提示。 – indieisaconcept