12

可能重复:
如何在使用 AMD (require.js) 时在 Backbone.js 中加载引导模型

这是一个关于我的问题的简单演示。

我需要访问id_userinmain.js文件。我的问题是,在这种情况下如何避免全局变量?为此目的使用全局变量是不好的做法吗?

main.js

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

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

索引.php

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

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

users();
</script>
4

2 回答 2

10

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

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

于 2012-04-17T22:05:00.990 回答
2

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

使用 AMD (require.js) 时如何在 Backbone.js 中加载引导模型

于 2012-04-25T18:30:12.090 回答