我使用yepnope.js动态加载javascript文件,我注意到我的脚本似乎根据Firebug和Webkit Inspector加载了两次.
问题是在Firebug的Net面板(Firefox 4最新版)中,他们的反应是200,而不是304.它似乎比Chrome慢.
我上传了这个显示问题的视频.您可以看到文件jquery-1.6.1.min.js和libs.js加载的时间.
我用来执行此操作的代码如下,简化:
Modernizr.load({
load: ['jquery-1.6.1.min.js', 'libs.js'],
complete: function () {
console.log("loaded");
}
});
Run Code Online (Sandbox Code Playgroud)
Modernizr.load()是yepnope().
我正在尝试使用Modernizr 2检测媒体查询是否存在,然后在适当时加载respond.js.
我把它放在我的script.js文件中......
Modernizr.load({
test: Modernizr.mq,
yep : '',
nope: 'mylibs/respond.js'
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我很惊讶没有关于如何在Modernizr网站上使用媒体查询执行此操作的示例.这是我正在使用的Modernizr的版本......
我一直在实现yepnope脚本加载器作为modernizr.js库的一部分.之后我成功地加载了jQuery以加载jQuery依赖脚本.我是异步加载资源的新手,所以对我来说这有点新鲜.我一直在四处寻找,但是下面没有太多运气.
我的问题是,在使用yepnope.js框架时,您对如何有效替换$(document).ready()的功能有何看法?
我的理论是在我的基础库中创建一个适当命名的函数,然后在我的页面上将该变量设置为包含我现有的$(document).ready()代码的匿名函数.在所有脚本加载到完整回调之后,yepnope将调用此变量.
你是否同意这是一个很好的方法,或者我是否完全以错误的方式接近这个?
(对于那些不知道的人,yepnope.js的异步性质意味着文档在yepnope加载器完成之前调用$或jQuery,抛出"$ is undefined"错误< - 如果错误请纠正我.)
第一个问题,希望它是一个好的.
javascript jquery document-ready asynchronous-loader yepnope
我正在使用RequireJs来构建我的JavaScript代码.另外,我使用了很多CSS3,我使用了"Modernizr w/YepNope"+ x个css3 polyfill.
我理解"Modernizr w/YepNope"和RequireJs都是资源加载器.既然它们都是资源加载器,那么在同一个项目中同时使用它们是一个坏主意吗?
所以,基本上我问,使用是不是一个坏主意:
在同一页面?
现在使用modernizr加载条件javascript文件有哪些好的做法,因为在最新版本的modernizr中不推荐使用yepnope和.load.
以前能够使用.load函数. http://modernizr.com/docs/#load
Modernizr.load({
test: Modernizr.geolocation,
yep : 'geo.js',
nope: 'geo-polyfill.js'
});
Run Code Online (Sandbox Code Playgroud)
现在.load与yepnope一起被弃用. https://github.com/SlexAxton/yepnope.js/
在yepnope被弃用之前参考答案 使用Modernizr加载脚本...不工作
想法是加载页面/something/index.html.但是,在我展示之前,它的依赖关系(在这种情况下是css和图像)是预加载的.
Modernizr.load({
load: ['/something/styles.css', '/something/image1.jpg'],
complete: showFile
});Run Code Online (Sandbox Code Playgroud)
我查看了Paul Irish的"imagesLoaded"jQuery插件,但我更喜欢使用我已经拥有的加载器的简单性.我知道YepNope(和Modernizr.load)不是设计师作为通用预加载器,但我觉得这是最干净的方法.
非常感谢有关如何将图像预加载到Modernizr/YepNope加载脚本中的任何想法.
新西兰
我有以下内容:
Modernizr.load([
{
load : '//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js',
complete : function () {
if ( !window.jQuery ){
Modernizr.load('/js/jquery-1.6.2.min.js');
}
}
},
{
load : ["/js/someplugin.js", "/js/anotherplugin.js"],
complete : function()
{
// do some stuff
}
},
{
load: ('https:' == location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js'
}
]};
Run Code Online (Sandbox Code Playgroud)
我读到Modernizr加载脚本Asyncronously.但在上面的例子中,哪些是异步加载?
是否所有以下内容都是异步加载的?
或者它是异步和有序加载的组合,如下所示:
我很难测试它是哪种情况.
使用javascript异步下载另一个javascript文件.
我知道这可以通过在页面上插入新的脚本标签并将src属性设置为文件URL来完成.
我还需要在脚本下载完成后运行一些代码.我一直在使用yepnope,它们提供了在脚本完成下载和执行时执行的"回调".
这是如何完成的?
谢谢!
我使用yepnope.js作为资源加载.我想只在加载了该模块的所有依赖项时才在我的JS模块中执行代码.我不想加载已经加载的JS依赖项.
假设,我有依赖D1.js和D2.js. 我试过了
yepnope({
load: ['D1.js', 'D2.js],
complete: function() {
//execute my code here
}
});
Run Code Online (Sandbox Code Playgroud)
这是有效的,但是,每次都会加载资源,即使它们之前已经加载过.
如果我做那样的多个测试:
yepnope([{
test: $().d1,
nope: 'D1.js'
},
{
test: $().d2,
nope: 'D2.js'
}]);
Run Code Online (Sandbox Code Playgroud)
目前尚不清楚在哪里放置整体已完成的功能 - 在所有资源加载后运行的功能.
是否可以使用yepnope执行此操作,还是需要使用其他组件?
谢谢.
不确定如何测试这个但是通过使用Modernizer.load的查询加载CSS样式表是否有任何性能提升,而不是仅在同一样式表中用CSS类名覆盖规则.
例如,如果设备具有触摸支持,那么我有一个不同的布局要加载,是否更快做...
{
test: Modernizr.touch,
yep : 'css/touch.css',
nope: 'css/base.css'
}
Run Code Online (Sandbox Code Playgroud)
或者覆盖相同样式表中的样式......
.container { width: 50% }
.touch .container { width: 100% }
Run Code Online (Sandbox Code Playgroud)
似乎差异归结为额外查询的速度和一个大CSS文件的重量?
yepnope ×10
modernizr ×7
javascript ×4
jquery ×2
requirejs ×2
asynchronous ×1
css ×1
labjs ×1
polyfills ×1