Intereting Posts
Создание предварительного просмотра в пользовательском мета-окне Как настроить результаты поиска в теме Bones? Функция is_email () Не проверяется в пределах цикла forach Нужно элегантное решение для объявления значения двух переменных на основе количества сообщений Невозможно изменить HTML-разметку изображений в контенте post Могу ли я сделать поисковый запрос, который включает пробел? Перенос сайта WordPress на новый сервер Увеличение изображения kb при изменении размера Какой код писать в моем плагине, чтобы исключить мои плагины сгенерированных страниц из главного навигатора? Отображать дочерние страницы в боковой панели исходной страницы в wordpress отменить регистрацию скриптов на определенной странице Как отключить https с сайта wordpress? Рекомендуемое изображение всегда отображается с 198px высоты? Front-end удалить учетную запись в WordPress Двойные префиксы таблицы WordPress mysql

require.js для загрузки javascript

в то время как wp_enqueue_script, похоже, работает, это не очень элегантно. В настоящее время я создаю WP-интерфейс, который использует MVC (backbone.js) и имеет буквально 30+ отдельных сценариев Model / View / Collection / Controller, и я продолжаю добавлять к числу. Я использовал require.js намного раньше и действительно нравится, однако, похоже, он полностью нарушает логику wordpresses.

Может ли кто-нибудь указать мне на чистый метод использования js scriptloader с wordpress? или это безнадежная задача?

благодаря

Solutions Collecting From Web of "require.js для загрузки javascript"

Хотя у WordPress уже есть базовый API .js (с скриптом register и enqueue), я не понимаю, почему вы не можете использовать его в сочетании с require.js, по крайней мере, на модульном уровне.

Из того, что я могу сказать (никогда не использовал), его нужно только загружать, так что вы можете,

 wp_enqueue_script( $handle, '...folder../require.js', $deps, $ver, $in_footer ); 

Затем используйте рекомендуемую структуру папок и код js, чтобы воспользоваться ею. Я считаю, что require.js является агностиком рамки, даже если у него есть собственная функция пространства имен, чтобы избежать конфликтов.

С учетом сказанного вы все еще будете ограничены использованием этого для своего собственного кода, в отличие от плагинов и тем, которые вы могли бы использовать.

Значение, если плагин или автор темы делает это правильно, вы можете wp_dequeue_script скрипт и управлять им с помощью require.js, но что, если они этого не делают? Существует не так много, что вы можете сделать за пределами написания своего рода взломанный плагин или вручную изменить код.

По этой причине использование js-фреймворка с wordpress, вероятно, не стоит эффекта, если только вы не делаете это с нуля и не контролируете плагины и темы.

Для использования требуется JS, вам нужно добавить в голову

 <!-- Delayed execution of inline jQuery scripts with ready waiting event --> <script type="text/javascript">(function(w, d, u){w.readyQ = []; w.bindReadyQ = []; function p(x, y){if (x == "ready"){w.bindReadyQ.push(y); } else{w.readyQ.push(x); }}; var a = {ready:p, bind:p}; w.$ = w.jQuery = function(f){if (f === d || f === u){return a} else{p(f)}}})(window, document)</script> <!-- Loading require.js --> <script async data-main="/wp-content/theme/default/js/requirejs.config" src="/wp-content/theme/default/js/requirejs.min.js"></script> 

Затем создайте файл конфигурации Require.JS и обновите функции functions.php

 /* Delayed loading of all JS files */ add_filter('script_loader_tag', function($tag, $handle, $src) { if (isAdmin()) return $tag; if (stripos($src, 'jquery.min') !== FALSE) return ''; global $wp_scripts; $dependencies = $wp_scripts->query($handle, 'registered')->deps; $dependenciesList = empty($dependencies) ? "'jquery'" : "'" . implode("','", $wp_scripts->query($handle, 'registered')->deps) . "'"; return "<script>$(document).ready(function(){ define('{$handle}', [{$dependenciesList}], function(){require(['{$src}']);}); require(['{$handle}']); });</script>\n"; }, 10, 3); 

И в конце, вам нужно в вашем файле конфигурации добавить инициализацию отложенных событий jquery, например:

 requirejs.config({ paths: { jquery: 'jquery.min' } }); //loading jquery as dependency require(["jquery"], function ($) { (function($,d){$.each(readyQ,function(i,f){$(f)});$.each(bindReadyQ,function(i,f){$(d).bind("ready",f)})})(jQuery,document); });