我正在寻找基于一组特定条件有条件地加载某些文件的最佳方法。
我有三个 CSS 文件和两个 javascript 文件,我目前正在加载如下:
<link href="core.min.css" rel="stylesheet" type="text/css">
<link href="add_regular.min.css" rel="stylesheet" type="text/css">
<link href="add_retina.min.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery-plugin.min.js"></script>
很明显,第四个文件是 JQuery,第五个是我的 JQuery 插件。JQuery 插件内部有一系列类似于测试的函数,例如isMobile
、isRetina
、isPhone
等。但是,让我们关注isRetina
.
我要完成的工作如下:
- 首先加载 JQuery 和我的 JQuery 插件
- 使用
isRetina
我的 JQuery 插件中的函数来检查设备是否有视网膜显示 - 加载
core.min.css
add_regular.min.css
如果不是 Retina 显示则加载,如果add_retina.min.css
Retina 显示则加载
目前我正在加载所有三个 CSS 文件,我不想这样做,因为我有一堆其他 CSS 文件,我想加载它们,因为我的 JQuery 插件根据上面的示例确定哪个是最好的。例如,在使用插件的功能phone.min.css
进行另一次测试后,我可能想要加载一个。isPhone
我正在考虑使用YepNope
和做这样的事情:
<script type="text/javascript" src="yepnope.min.js"></script>
<script>
yepnope([{
load: ['jquery.min.js', 'jquery-plugin.min.js'],
test : $.myplugin.isRetina(),
yep : ['core.min.css', 'add_retina.min.css'],
nope : ['core.min.css', 'add_regular.min.css'],
complete : function(){
//my jquery plugin constructor here
$(selector).myplugin(options);
}
}]);
</script>
但是,即使上述方法是正确的,我也不确定如何实现document.ready
,因为我的插件的构造函数只需要在 DOM 准备好时运行。
我想了解如何使用YepNope
或任何其他解决方案来解决这个问题。
干杯。