requirejs依赖加载甚至条件为false

时间:2015-08-03 14:21:07

标签: requirejs

为什么在HTML文件中注入了带有与require(“messages”)对应的脚本URL的脚本标记 <script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="messages" src="lib/messages.js"> </script> 即使条件是假的?感谢。

以下是生成它的代码:

 define(function (require) {
        var bool = false;
        if (bool) {
            var messages = require('messages');
            alert(messages.getHello());
        } else{
            alert("Module messages not loaded !");
        }
    });

测试下面的代码,发现没有生成加载messages.js的脚本标记

define(function (require) {    
    var bool = false;
    if(bool){
        var dep = 'messages'; 
        var messages = require(dep);
        alert(messages.getHello());
   } else{
        alert("Module messages not loaded !!");
   }
});

同样在这里:

define(function (require) {
    var bool = false;
    if (bool) {
        var messages = require('messages', function(messages){
            alert(messages.getHello()); 
        });

    } else{
        alert(" Module messages not loaded !");
    }
});

1 个答案:

答案 0 :(得分:0)

要求不带方括号的调用(如require('messages'))使用正则表达式从文件中解析,并视为编写模块的依赖关系。作者必须采取这个决定来添加我们在这里讨论的糖语法。

如果您需要使用条件依赖项,则必须使用如下所示的方括号语法。

define(function (require) {
    var bool = false;
    if (bool) {
        require(['messages'], function(messages){ //Note the square brackets around messages
            alert(messages.getHello()); 
        });
    } else{
        alert(" Module messages not loaded !");
    }
});