JavaScript文件的结构和Modernizer/yepnope
我正在研究Modernizer和yepnope.js的整个异步脚本加载过程,我想知道如何调整应用程序的结构以使用异步脚本加载 目前的结构类似于此: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
。。。
此代码位于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;
}