2013-03-26 3 views
2

Я использую requirejs в некоторой специальной среде JS, где приложение предоставляет глобальный синглтон (я не могу изменить этот факт, это не работает в типичной среде браузера). Я пишу своего рода JS SDK для этого приложения и хочу предоставить различные модули, которые используют этот глобальный.requirejs: могу ли я потребовать глобальную переменную runtime?

Могу ли я обернуть этот глобальный модуль каким-то образом, чтобы потребовать его от моих модулей? Что-то вроде

define([the_global_application], function(app) 

Спасибо за ваши мысли об этом.

ответ

1

Да, вам просто нужно определить его.

// mysingletonapp.js 
// define the module for our global var 
define(['list', 'any', 'dependency', 'here'], function (l, a, d, h) { 
    return yourGlobalVariable; 
}); 

(я не думаю, что вы будете иметь зависимости там, так как вы просто оборачивать глобальную var)

В общем, вы можете использовать этот модуль, как обычно:

require(['mysingletonapp'], function (app) { 
    // do something cool 
}); 

Если вы хотите пропустить все это, вы можете использовать shim property of RequireJS. Вам просто нужно добавить это в файл опций:

... 
shim: { 
     'globalApplication': { 
      deps: ['underscore', 'jquery'], // again, you should not need them 
      exports: 'yourGlobalVar' 
     } 
} 
... 

shim сек обруча библиотеки, которые не поддерживают AMD, так, чтобы эта настройка работы, вам потребуется JS для globalApplication. Это не ваше дело.

+0

Thanks Alessandro! Довольно прямо, я думаю, но я не думал об этом. Я должен был создать фиктивный модуль-файл, хотя, если вы используете конфигурацию shim для этого requirejs будет искать файл globalApplication.js в вашем baseUrl, если только я не сделал что-то неправильно. – Chris

+0

Вы правы. Шимкам нужен файл js. –

Смежные вопросы