我正在尝试使用requirejs并加载外部供应商js并隐藏Backbone或Underscore等全局变量。
这是我的代码:
<script data-main="./main" src="<?php echo $rootRequirejs?>/require.js"></script>
<script type="text/javascript">
require.config({
baseUrl: "/web/js",
paths: {
"jquery": "/vendor/js/jquery-1.7.1.min",
'underscore': '/vendor/js/underscore-min',
'backbone': '/vendor/js/backbone-min'
}
});
这是我的问题:
1) 如果我去javascript控制台,我写Backbone或下划线,他们被定义.... 我认为它不应该从控制台访问,而只能从我的main.js文件中访问 为什么他们是全球性的?
答案 0 :(得分:1)
可能是一个更好的选择,如Florian在上面的评论中指出的那样是使用Require2.0,因为它现在附带"shim" feature,它可以帮助你使用非AMD的libs ...虽然我不确定将消除全局变量。
fwiw,除非你有特别的理由要避免全局,否则它们通常不是那么大的交易。
答案 1 :(得分:0)
您可以使用包含在AMD模块中的那些库的amd版本,这应该避免使用全局变量:
https://github.com/amdjs/backbone
https://github.com/amdjs/underscore
它们由RequireJS的作者James Burke维护。
希望这能解决你的问题!