requireJS中的全局变量

时间:2012-04-17 21:42:37

标签: javascript jquery requirejs

  

可能重复:
  How to load bootstrapped models in Backbone.js while using 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>

2 个答案:

答案 0 :(得分:10)

在使用requirejs的项目中不应该存在任何全局变量,因为它处理模块并且所有模块(及其属性/方法)永远不会被全局声明以保持环境的美观和清洁。如果你需要一个模块在另一个模块中使用变量集,那么它们应该通过某个API相互通信,或者将该变量设置为属性,需要模块并以此方式获取属性。

但也许你应该问自己是否真的需要requirejs。如果你想构建一个适当的基于模块的应用程序(我不知道你是否想知道如何传递变量)那么是的,如果您想要的是从JS加载少量文件,那么LazyLoad(http:// www。 appelsiini.net/projects/lazyload)可能就是答案。只是说根据你的情况考虑特别考虑requirejs的足迹,值得思考。

答案 1 :(得分:2)

您正在寻找的是将配置变量引导到项目中的能力。这回答了你的问题

How to load bootstrapped models in Backbone.js while using AMD (require.js)