Intereting Posts
Выход wp_get_archives () Категории фильтров, используемые с пользовательской структурой Permalink Включить тему, если это режим совместимости / quirks? Получите все продукты, у которых есть обе категории продуктов Плагин Facebook показывает существующие комментарии Варианты «Микро-сайт» Почему wp-login перенаправляется на домашнюю страницу при использовании этой функции? Создание нескольких текстовых полей wp_editer () для цикла – текстовый / визуальный переключатель работает только для первого редактора Кто-нибудь понял, как использовать WordPress MultiSite с помощью Domain Mapping & SSL? Что именно ищет параметр «s» в запросах WP? Показать идентификатор категории в пользовательском типе сообщения Добавление дополнительных страниц в плагин, которые не должны отображаться на боковой панели Заставить пользователей переходить Обнаружение параметров $ _GET с любой страницы + Cookie Тайм-аут при обновлении сети на нескольких сайтах

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); });