Подтвердить что ты не робот

Глобальные переменные в requireJS

Возможный дубликат:
Как загрузить загруженные модели в Backbone.js при использовании AMD (require.js)

Это простая демонстрация моей проблемы.

Мне нужно получить доступ к файлу id_user в main.js. Мой вопрос: как избежать глобальных переменных в этой ситуации? Плохая практика использует глобальные переменные для этой цели?

main.js

require({
    paths : {
        jQuery : 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min'
    }
});

require([ 'jQuery' ], function() {
       alert(id_user);
    });

index.php

<script data-main="js/main" src="js/require.js"></script>

<script type="text/javascript">
function users() {
    id_user = <?php echo $id; ?>
}

users();
</script>
4b9b3361

Ответ 1

Нельзя использовать глобальную переменную для такого использования в проекте с использованием requirejs, поскольку она предназначена для обработки модулей, и все модули (и их свойства/методы) никогда не объявляются глобально, чтобы сохранить окружающую среду красивой и чистой. Если вам нужен один модуль для использования набора переменных в другом модуле, тогда они должны либо разговаривать друг с другом через какой-либо API, либо иметь эту переменную, заданную как свойство, для этого требуется модуль и получить свойство таким образом.

Но, возможно, вы должны спросить себя, действительно ли вам нужно requirejs. Если вы хотите создать подходящее приложение на основе модулей (которое я не уверен, что вы, если вам интересно, как передавать переменную), да, если все, что вы хотите, это загрузить несколько файлов из JS, тогда LazyLoad (http://www. appelsiini.net/projects/lazyload), вероятно, является ответом. Просто говорю, что стоит подумать о том, в зависимости от вашего случая, особенно учитывая размер требуемых требований.