Javascript 使用Modernizer/yepnope时的长延迟
这些天来,我开始在前端项目中使用Modernizer,我刚刚意识到一些让我头疼的事情 (代码片段后的演示链接) 但首先,这里是我的Javascript 使用Modernizer/yepnope时的长延迟,javascript,jquery,html,modernizr,yepnope,Javascript,Jquery,Html,Modernizr,Yepnope,这些天来,我开始在前端项目中使用Modernizer,我刚刚意识到一些让我头疼的事情 (代码片段后的演示链接) 但首先,这里是我的之前的内容: 演示链接: 我可以看到页面加载,几乎一秒钟之后,我的幻灯片初始值设定项(包装在$()调用中)开始启动。这种延迟相当长而且不美观,这正是我想要修复的 我查看了Chrome中的网络选项卡,看到我加载的Modernizer脚本首先作为图像加载(因此,不执行),然后作为script标记添加,最后执行。这就解释了延迟的原因,因为jQuery执行得很晚(在DOMCo
之前的内容:
演示链接:
我可以看到页面加载,几乎一秒钟之后,我的幻灯片初始值设定项(包装在$()
调用中)开始启动。这种延迟相当长而且不美观,这正是我想要修复的
我查看了Chrome中的网络选项卡,看到我加载的Modernizer脚本首先作为图像加载(因此,不执行),然后作为script
标记添加,最后执行。这就解释了延迟的原因,因为jQuery执行得很晚(在DOMContentLoaded事件之后),然后调用$()
一些问题:
script
标记?看起来是load
,但这对我来说似乎是个奇怪的选择modernizer.load
并在
标记之前引用我的脚本,它工作得很好(没有幻灯片大小跳跃),但维护起来越来越困难
有小费吗?
谢谢 Modernizer中的脚本加载功能不是为性能而设计的。您最好按照惯例(即使用
标记)或使用RequireJS加载脚本。
<script src="js/vendor/modernizr.custom.js" type="text/javascript"></script>
<script src="js/loader.min.js" type="text/javascript"></script>
Modernizr.load([
// jQuery
{
load: '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js',
complete: function () {
if (!window.jQuery) {
Modernizr.load('js/vendor/jquery-1.11.1.min.js');
}
}
}
// Slick (slideshow)
,{
load: '//cdn.jsdelivr.net/jquery.slick/1.3.9/slick.min.js',
complete: function() {
if (!window.jQuery.fn.slick) {
Modernizr.load('slick/slick.min.js');
}
}
}
// Main script
,'js/script.min.js'
]);