簡體   English   中英

在Wordpress中使用requireJS

[英]Using requireJS within Wordpress

我正在為我設置一種方法來保持我首選的requireJS工作方式並將其與Wordpress集成。

最重要的問題是如何加載jquery。 Wordpress通過wp_enqueue_script加載jQuery,這需要保持這種方式,因為我經常使用的一些Wordpress插件需要以這種方式添加jquery。 我不想在requireJS設置中加載第二個版本的jQuery。 所以,經過一番環顧,這就是我想出來的:

模板/ footer.php

<script>
if (typeof jQuery === 'function') {
    define( 'jquery', function () { return jQuery; } );
}

require(['/assets/js/sample-common.js'], function (common) {
   require(['sample-bootstrapper']);
});
</script>

這看到jQuery是否已經添加到頁面中,如果已經將它設置為模塊值。

我的問題是,我應該將jquery留在全局命名空間中,還是按照以下說明操作:

http://requirejs.org/docs/jquery.html#noconflictmap

上面的問題是我可能需要包含不兼容AMD的jquery插件,是否值得努力使它們與AMD兼容,或者我想到的另一個解決方案是從noConflict聲明中刪除'jQuery '在全局命名空間中允許插件運行。

這不是一個問題,更多的是要求最佳實踐建議。 任何人都將不勝感激!

謝謝!

WordPress將jQuery排隊,因為它是一個腳本,您應該為自己的腳本執行相同操作,因為這意味着WordPress可以優雅地為您處理依賴項。 另請注意,WordPress的捆綁jQuery已經在noConflict()模式下加載,以防止插件沖突。

如果您將jQuery指定為腳本的依賴項之一,那么WordPress會將其添加到任何添加依賴於它的腳本的頁面 - 但前提是它尚未加載(它不會再次添加它)。

更新:根據@brasofilo注釋, get_stylesheet_directory()函數搜索child,然后查詢父項,如果子項中不存在匹配項。 在父主題和子主題情境中都可以安全地使用get_stylesheet_directory()

取自WP編碼並修改: http//codex.wordpress.org/Function_Reference/wp_enqueue_script

/**
 * Proper way to enqueue scripts and styles
 */
function theme_name_scripts() {
    wp_enqueue_script( 'script-name', get_template_directory_uri() . '/assets/js/sample-common.js', array( 'jquery' ), '1.0.0', true );
}

add_action( 'wp_enqueue_scripts', 'theme_name_scripts' );

這里值得注意的是,如果你的腳本在子主題目錄中,那么你應該換掉get_template_directory_uri()並用get_stylesheet_directory_uri()替換它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM