【发布时间】:2013-11-18 15:39:30
【问题描述】:
对于使用 CommonJS 语法的 RequireJS,我是个奇怪的行为。我会尽量解释我正在研究的背景。
我有一个名为Controller.js 的JS 文件,它注册输入事件(单击)并使用一系列if 语句来执行正确的操作。一个典型的 if 语句块可以如下。
if(something) {
// RequireJS syntax here
} else if(other) { // ...
为了实现 RequireJS 语法,我尝试了两种不同的模式。第一个是以下。这是加载模块的标准方式。
if(something) {
require(['CompositeView'], function(CompositeView) {
// using CompositeView here...
});
} else if(other) { // ...
第二个使用 CommonJS 语法,如
if(something) {
var CompositeView = require('CompositeView');
// using CompositeView here...
} else if(other) { // ...
两种模式都按预期工作,但我注意到 Firebug 出现了一种奇怪的行为(Chrome 工具也是如此)。特别是,使用第二个,CompositeView 文件已经下载,即使我没有遵循管理特定操作以响应something 条件的分支。相反,第一个解决方案是在请求时下载文件。
我错过了什么吗?是不是变量提升的原因?
【问题讨论】:
-
这不是由于变量提升。我会检查以确保您没有以其他方式显式导入该脚本,因为您所描述的确实不应该发生。
-
@Pointy 感谢您的评论。我检查了两次,但没有找出问题所在。是的,吊装不是问题,但我只要求确认...
-
Firefox 的Tamper Data 插件或本地浏览器开发工具通常可以显示所有正在进行的HTTP 请求。您应该清除缓存并验证在回调版本中(无论如何这确实是正确的做事方式)当您的代码采用“else”分支时,您肯定没有导入脚本。
标签: javascript download requirejs commonjs