Переопределение значений по умолчанию underscore.js при использовании с require.js в качестве модуля AMD - PullRequest
1 голос
/ 10 декабря 2011

Поскольку подчеркивание загружается как модуль 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'.

Есть какие-нибудь предложения?

Приветствия: -)

ОБНОВЛЕНИЕ: На основе предложений в принятом ответе я теперь делаю следующее:

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
    }

});

libs / underscore / define

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

main.js

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

1 Ответ

2 голосов
/ 10 декабря 2011

Возможно, у вас есть модуль конфигуратора, который загружает все, что нужно настроить.

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