Зависимости и включения модуля RequireJS

#javascript #requirejs

#javascript #requirejs

Вопрос:

В моем конфигурационном файле RequestJS я загружаюсь select2 , и я хотел бы также загрузить для него локали. В настоящее время у меня есть эта настройка :

 require.config({
  enforceDefine: true,
  baseUrl: '/js',
  shim: {
    'bootstrap@3.1.1': {
      deps: [ 'jquery' ],
      exports: '

Проблема здесь в том, что  lib/select2_locales/select2_locale_fr  ее необходимо загрузить после  select2.min.js  .

Есть ли какой-нибудь способ изменить эту конфигурацию или добавить опцию, чтобы я мог загружать локали вместе  select2  с файлом конфигурации require?


Ответ №1:

Если это так, то select2_locale_fr не является зависимостью от select2, select2 является зависимостью от select2_locale_fr

 define('locale_specific_select2',['select2'], function(select2){
  select2.accomodateNewLocale= function(stuff){
    doWhatYouNeedToWith(stuff);
  }
  locale = determineLocale()
  function processLocaleData(localeData){
    select2.accomodateNewLocale(localeData);
  }
  require(['pathTOLocalePlugin' locale], processLocaleData);
}
 

Комментарии:

1. правильно, но если мне нужно включить больше локалей, что тогда? Нужно ли мне создавать какой-то фальшивый модуль, зависящий от каждой локали, которые, в свою очередь, зависят от select2 ? Мне кажется странным.

2. Вы говорите о разных модулях для каждой локали, о модуле, который отличается поведением и ожиданиями (даже если эти различия минимальны)

3. Лучшим подходом, чем тот, который вы используете, было бы загрузить модуль select2, а затем определить свой язык во время выполнения, прежде чем требовать его

4.проблема здесь в том, как загрузить локали после select2 загрузки? Является ли "законным" использование requirejs внутри init функции shim правила? O_o Я не хочу обеспечивать загрузку локали каждый раз, когда мне требуется select2 . Если я не оберну select2 внутри полностью настраиваемого локального модуля ... ?

5. Я не знаю, почему вы так стремитесь использовать прокладку для довольно нестандартного поведения, рассмотрим пример, который я опубликовал выше

// export jQuery...
},
'jquery@2.1.1': {
exports: 'Проблема здесь в том, что lib/select2_locales/select2_locale_fr ее необходимо загрузить после select2.min.js .

Есть ли какой-нибудь способ изменить эту конфигурацию или добавить опцию, чтобы я мог загружать локали вместе select2 с файлом конфигурации require?

Ответ №1:

Если это так, то select2_locale_fr не является зависимостью от select2, select2 является зависимостью от select2_locale_fr


Комментарии:

1. правильно, но если мне нужно включить больше локалей, что тогда? Нужно ли мне создавать какой-то фальшивый модуль, зависящий от каждой локали, которые, в свою очередь, зависят от select2 ? Мне кажется странным.

2. Вы говорите о разных модулях для каждой локали, о модуле, который отличается поведением и ожиданиями (даже если эти различия минимальны)

3. Лучшим подходом, чем тот, который вы используете, было бы загрузить модуль select2, а затем определить свой язык во время выполнения, прежде чем требовать его

4.проблема здесь в том, как загрузить локали после select2 загрузки? Является ли "законным" использование requirejs внутри init функции shim правила? O_o Я не хочу обеспечивать загрузку локали каждый раз, когда мне требуется select2 . Если я не оберну select2 внутри полностью настраиваемого локального модуля ... ?

5. Я не знаю, почему вы так стремитесь использовать прокладку для довольно нестандартного поведения, рассмотрим пример, который я опубликовал выше


},
'select2': {
deps: [
'bootstrap',
'lib/select2_locales/select2_locale_fr',
/// NOTE : add locales here
'css!/css/select2/select2.css',
'css!/css/select2/select2-bootstrap.css',
],
exports: '$.fn.select2'
}
},
paths: {
'bootstrap@3.1.1': 'lib/bootstrap.min',
'jquery@2.1.1': 'lib/jquery.min'
 },
map: {
'*': {
'css': 'css@0.1.2',
'jquery': 'jquery@2.1.1',
'bootstrap': 'bootstrap@3.1.1'
}
}
});

Проблема здесь в том, что lib/select2_locales/select2_locale_fr ее необходимо загрузить после select2.min.js .

Есть ли какой-нибудь способ изменить эту конфигурацию или добавить опцию, чтобы я мог загружать локали вместе select2 с файлом конфигурации require?

Ответ №1:

Если это так, то select2_locale_fr не является зависимостью от select2, select2 является зависимостью от select2_locale_fr


Комментарии:

1. правильно, но если мне нужно включить больше локалей, что тогда? Нужно ли мне создавать какой-то фальшивый модуль, зависящий от каждой локали, которые, в свою очередь, зависят от select2 ? Мне кажется странным.

2. Вы говорите о разных модулях для каждой локали, о модуле, который отличается поведением и ожиданиями (даже если эти различия минимальны)

3. Лучшим подходом, чем тот, который вы используете, было бы загрузить модуль select2, а затем определить свой язык во время выполнения, прежде чем требовать его

4.проблема здесь в том, как загрузить локали после select2 загрузки? Является ли «законным» использование requirejs внутри init функции shim правила? O_o Я не хочу обеспечивать загрузку локали каждый раз, когда мне требуется select2 . Если я не оберну select2 внутри полностью настраиваемого локального модуля … ?

5. Я не знаю, почему вы так стремитесь использовать прокладку для довольно нестандартного поведения, рассмотрим пример, который я опубликовал выше