Я изучаю всю асинхронную загрузку сценариев с помощью Modernizr и yepnope.js, и мне интересно, как я могу адаптировать структуру своего приложения для использования асинхронной загрузки скриптов.Структура файлов JavaScript и Modernizr/yepnope
Прямо сейчас структура напоминает это:
...
<head>
<script src=jquery.js></script>
<script src=plugin1.js></script>
<script src=plugin2.js></script>
<script src=plugin3.js></script>
<script src=global.js></script>
</head>
<body>
Этот код находится в header.php файл, который require
d по всему приложению. В разделе документа тела (другие PHP файлы), я, возможно, некоторые файлы JavaScript, как это:
...
<script src=moduleA.js></script>
<script src=someScripts.js></script>
</html>
Вот упрощенный пример того, что moduleA.js и someScripts.js может содержать:
$(document).ready(function() {
$('.searchDate').myCoolPlugin({ /* some options */ });
});
и someScripts.js:
$(document).ready(function() {
$('#departureDate, #arrivalDate').myCoolPlugin({ /* some options */ });
});
Если я использую Modernizr, в верхней части страницы, я бы удалить другие сценарии плагин и в global.js я бы написать:
Modernizr.load([
{
test: $.fn.myCoolPlugin,
nope: 'plugin1.js',
complete: function() {
$(document).ready(function() {
$('.filterDates').myCoolPlugin();
}
}
}
]);
Как я могу гарантировать, что myCoolPlugin был загружен модулем timeA.js и someScripts.js? Я понимаю, что я могу обернуть инициализацию плагина в этих файлах Modernizr.load()
, но это похоже на ненужное дублирование кода.