Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript文件的结构和Modernizer/yepnope_Javascript_Asynchronous_Modernizr_Yepnope_Event Driven Design - Fatal编程技术网

JavaScript文件的结构和Modernizer/yepnope

JavaScript文件的结构和Modernizer/yepnope,javascript,asynchronous,modernizr,yepnope,event-driven-design,Javascript,Asynchronous,Modernizr,Yepnope,Event Driven Design,我正在研究Modernizer和yepnope.js的整个异步脚本加载过程,我想知道如何调整应用程序的结构以使用异步脚本加载 目前的结构类似于此: 。。。 此代码位于header.php文件中,该文件在整个应用程序中都是required。在文档正文部分(其他PHP文件),我可能有一些如下JavaScript文件: // Header script var race_won = false; var load_body_script = function() { race_won = tru

我正在研究Modernizer和yepnope.js的整个异步脚本加载过程,我想知道如何调整应用程序的结构以使用异步脚本加载

目前的结构类似于此:

。。。
此代码位于header.php文件中,该文件在整个应用程序中都是
require
d。在文档正文部分(其他PHP文件),我可能有一些如下JavaScript文件:

// Header script
var race_won = false;
var load_body_script = function() {
  race_won = true;
};

Modernizr.load([
    {
        test: ..your condition..,
        yep: ..test success..,
        nope: ..test fail..,
        complete: function() {
            $(document).ready(function() {
                $('.filterDates').myCoolPlugin();
                load_body_script();
            }
        }
    }
]);

// Body script
var body_script = function() {
  // .. your code here ..
}
if (race_won) {
  body_script();
}
else {
  load_body_script = body_script;
}
。。。
下面是moduleA.js和someScripts.js可能包含的内容的简化示例:

$(document).ready(function() {
     $('.searchDate').myCoolPlugin({ /* some options */ });
});
和someScripts.js:

$(document).ready(function() {
     $('#departureDate, #arrivalDate').myCoolPlugin({ /* some options */ });
});
如果我使用的是Modernizer,我会在页面顶部删除其他插件脚本,并在global.js中写道:

Modernizr.load([
    {
        test: $.fn.myCoolPlugin,
        nope: 'plugin1.js',
        complete: function() {
            $(document).ready(function() {
                $('.filterDates').myCoolPlugin();
            }
        }
    }
]);

我如何保证mycolplugin在moduleA.js和someScripts.js执行时已加载?我意识到我可以用
Modernizr.load()
将插件初始化封装在这些文件中,但这似乎是不必要的代码重复。

如果我正确理解了您的问题,那么您希望在用Modernizr加载必要的脚本后执行主体脚本

你可以这样做:

// Header script
var race_won = false;
var load_body_script = function() {
  race_won = true;
};

Modernizr.load([
    {
        test: ..your condition..,
        yep: ..test success..,
        nope: ..test fail..,
        complete: function() {
            $(document).ready(function() {
                $('.filterDates').myCoolPlugin();
                load_body_script();
            }
        }
    }
]);

// Body script
var body_script = function() {
  // .. your code here ..
}
if (race_won) {
  body_script();
}
else {
  load_body_script = body_script;
}