【发布时间】:2012-05-29 14:19:18
【问题描述】:
我正在尝试使用 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 文件中访问。
为什么它们是全球性的?
【问题讨论】:
-
关于全局,在您对它们使用
noConflict()方法之前,它们仍然是全局的。 IIRC,require.js 允许您为这些依赖项定义一个函数,因此您可以返回类似Backbone.noConflict()的内容。 -
顺便说一句,你看过Require.js 2.0吗?它解决了你的问题。还可以看看“升级 require.js”指南,你会看到很多有用的东西。
-
你如何加载你的模块?您可以发布您的 main.js 以查看依赖项是如何声明的吗?
-
@GabrielJürgens 我确实解决了这个问题。实际上我只有一个关于全局变量的问题。并且 Backbone.noConflict() 不能解决我的问题。我的意思是主干是全球性的。
-
@FlorianMargaine。我确实解决了这个问题。实际上我只有一个关于全局变量的问题。并且 Backbone.noConflict() 不能解决我的问题。我的意思是主干是全球性的。
标签: javascript backbone.js require