2014-02-01 3 views
0

у меня есть следующий синглтон:Объявить локальные функции с require.js

(
    function() 
    { 
     require 
     (
      ['module'], 
      function() 
      { 
       module(); 
      } 
     ); 
    } 
)(); 

module.js:

function module() 
{ 
    alert('yay'); 
} 

Однако, когда я иду в консоль, я вижу, что модуль определен в глобальная область, что-то, что я не хочу, потому что я хочу, чтобы все мои зависимости находились внутри моего однотонального пространства.

Я понимаю, что одна из целей require.js заключается в том, чтобы избежать глобального загрязнения, поэтому как мне защитить свои зависимости от глобальной сферы, как я хочу?

+2

http://requirejs.org/docs/api.html#deffunc или http://requirejs.org/docs/api.html#modulename – Philipp

ответ

1

Правильно вы используете require.js.

Вы должны использовать функцию define, чтобы определить модуль. В module.js файла:

define (function() { 
    return function(){ 
     alert('yay'); 
    } 
}); 

Значение модуля, что вы вернетесь из внешней функции. Затем, чтобы потребовать модуль, используйте этот код:

require(['module'], function (module) { 
    module(); 
}); 

Таким образом, глобальная не загрязнен. Вы также можете определить модуль, для которого требуются другие модули таким образом:

define (["aModule","anotherModule"],function(aModule,anotherModule) { 
    return function(){ 
     alert(anotherModule.someThing + aModule.aProperty); 
    } 
}); 

Кроме того, вы можете определить больше, чем модуль в том же файле. Вы просто должны назвать их:

define("module1",["aModule","anotherModule"],function(aModule,anotherModule) { 
    return function(){ 
     //a module could be a function, an object or whatever you want 
     return "this module value is a string"; 
    } 
}); 

define("module2",["module1","anotherModule"],function(module1,anotherModule) { 
    return function(){ 
     alert(module1 + anotherModule.aProperty); 
    } 
}); 
+0

я не сделал знаю об этом, я пытался выяснить, как работает require.js, это было очень запутанно, но ваш ответ правильный, я приму вас через пару минут, спасибо! :) –

+0

Спасибо за обновление –

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