可能重复:
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>
答案 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)