加载同一JS库的两个版本

时间:2019-04-11 作者:Moo Master

当前正在从旧版本的JS库(sweetAlerts)迁移到新版本。

两个版本都会加载,但我希望能够使用更新的库,但不确定如何在JavaScript中引用它来使用更新的库。如果您对如何做到这一点有任何意见,我们将不胜感激。

wp_enqueue_script( \'sweet-alert\', plugin_dir_url( __FILE__ ) . \'js/sweetalert.min.js\', array(), $this->version, false );
wp_enqueue_script( \'sweet-alert-latest\', plugin_dir_url( __FILE__ ) . \'js/sweetalert-latest.min.js\', array(), $this->version, false );

2 个回复
最合适的回答,由SO网友:Craig Pearson 整理而成

sweetalert.js uses the global swal in both version 1.*.* and version 2.*.* of its library. Therefore if you load both js/sweetalert.min.js and js/sweetalert-latest.min.js the first one to define the global swal will be used, the second will be ignored or cause a console error.

To prevent this only load one library such as:

// PHP
wp_enqueue_script( \'sweet-alert-latest\', plugin_dir_url( __FILE__ ) . \'js/sweetalert-latest.min.js\', array(), $this->version, false );

And update any references targeting old SweetAlert code according to the migration documentation


Alternatively If you want to use both libraries concurrently you could utilise ES6 modules with a compiler such as babel

// Javascript
import swal as oldswal from \'/my-local-js-directory/sweetalert.1.5.1.js\';
import swal as newswal from \'/my-local-js-directory/sweetalert.2.1.0.js\';

// Old alert
oldswal({
  // Old alert config here
});

// New alert
newswal({
  // New alert config here
});

Ref: Babel

With common JS you could do something like this

const oldswal = require(\'/my-local-js-directory/sweetalert.1.5.1.js\')
const newswal = require(\'/my-local-js-directory/sweetalert.2.1.0.js\')
SO网友:Pabamato

看起来这不是WordPress相关的问题,而是外部JS库。

无论如何,如果在这种情况下,您可以加载两个JS文件,并且两次加载库没有冲突,那么我将使用dependency, versionin_footer wp\\u enqueue\\u脚本函数的参数如下:

wp_enqueue_script( \'sweet-alert\', plugin_dir_url( __FILE__ ) . \'js/sweetalert.min.js\', array(), \'1.0\', true );  
wp_enqueue_script( \'sweet-alert-latest\', plugin_dir_url( __FILE__ ) . \'js/sweetalert-latest.min.js\', array(\'sweet-alert\'), \'2.0\', true );
请注意,我没有使用类版本($this->version).<通过这种方式,您可以告诉WordPress先加载v 1.0,然后再加载v 2.0,这也是在页脚上加载JS以提高页面性能的一个很好的做法,除非您已经以其他方式处理了这一问题。

我希望这能有所帮助。

相关推荐

尝试仅在PODS类别/自定义帖子类型内的页面上加载JavaScript

我想加载CSS,但只在某些页面上加载。这段代码通常工作得很好,但我无法确定“条件标记”是什么只会加载这些页面。这是我在函数中放置的函数。php文件://Below loads JS ONLY for the main directory pages function directory_scripts () { if ( *** NOT SURE *** ): wp_enqueue_style( \'addev