【问题标题】:Overriding underscore.js defaults when used with require.js as an AMD module与 require.js 作为 AMD 模块一起使用时覆盖 underscore.js 的默认值
【发布时间】:2012-01-17 06:54:56
【问题描述】:

由于下划线作为 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 _;

});

这种方法有效,但我确信有一种更优雅的方法可以实现这一点,这样我就不必使用“下划线自定义”。

有什么建议吗?

干杯:-)

更新:根据接受的答案中的建议,我现在执行以下操作:

libs/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();
});

【问题讨论】:

    标签: javascript underscore.js requirejs


    【解决方案1】:

    您可能有一个配置模块,可以加载任何需要配置的内容。

    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();
    });
    

    【讨论】:

    • 感谢您的回答,我曾考虑过与此类似的事情,但我想将下划线和/或 jQuery 特定选项本地化为它们各自的自包含定义。然而,这种方法可以为未来的配置变化提供空间。
    • 看来我搞砸了上面的内容,我想说的是:所以我运行了这个,但对其进行了调整以支持自包含库设置。我现在基本上为我的库提供了一个引导程序,用于注册自定义配置。我需要覆盖或添加选项的每个库都创建一个自定义定义并在引导程序中引用它。引导程序公开了一个初始化函数,然后我在 main.js 中调用该函数。可能过于抽象,但到目前为止似乎有效。感谢您的提示。
    猜你喜欢
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    相关资源
    最近更新 更多