包含jQuery插件的最佳实践是什么

时间:2013-12-05 作者:Patrick Cullen

我正在将wordpress站点与另一个站点集成。集成包括一个由wordpress托管的表单,用户填写该表单并提交到其他站点。我正在使用一个自定义页面模板,其中包括几个jquery插件,用于表单验证等。目前,我直接链接到模板中的js文件,例如。

<script src="/join/js/jquery.validate-1.11.1.min.js"></script>
是否有一个建议的目录来存储这样的javascript文件?现在它们位于我在wordpress根目录中创建的目录中。有没有推荐的方法来包含jquery插件?使用wp_enqueue_脚本(\'jquery.validate….js\')而不是直接链接有什么好处?

1 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

为什么不应该硬编码javascript文件?为什么不应该硬编码指向javascript文件的链接,有几个原因:

它避开了WordPress的javascript文件队列,该队列是为处理依赖关系而设计的wp_register_script()) 然后您可以自由使用wp_enqueue_script() 在任何小部件、短代码或模板中。更好的是,只有在使用了适当的tempate、widget或shortcode时,脚本才会排队:如果它是硬编码的,则不可能wp_register_script()/wp_enqueue_script() 允许您或其他插件使用wp_localize_script() (最初用于传递本地化字符串,但更广泛地用于传递存储在数据库中的选项,这些选项随后可以在javascript文件中使用。

  • 可能还有更多原因…
    • 在哪里存储javascript文件?

      没有设置存储javascript文件的位置(在插件/主题中)。我倾向于把它们放在一个文件夹名中jsassets/js. 有意义的事情。

      如何加载javascript文件首先检查jQuery插件(或任何javascript库)是否还未包含在WordPress中。(这里有一个列表:http://codex.wordpress.org/Function_Reference/wp_register_script#Handles_and_Their_Script_Paths_Registered_by_WordPress). 如果有,就用它。

      Never 使用您自己的javascript库/插件副本,该副本包含在core中。这样做可能会破坏您和其他人的插件。

      将脚本分别注册和排队通常是有意义的:

      add_action( \'init\', \'wpse125424_register_scripts\' );
      function wpse125424_register_scripts(){
      
          wp_register_script( 
              \'my-script-handle\', //unique handle for our script
              plugins_url( \'js/my-script.js\', __FILE__ ), //url to script
              array( \'jquery\' ), //list any dependencies
              \'1.0\' //version, for cache busting
          );
      }
      
      然后打电话wp_enqueue_script(\'my-script-handle\') 每当您需要加载javascript文件时(例如,在负责小部件或短代码的函数中)。

      这样做的好处很明显:您的脚本在一个易于维护的地方注册,并且与脚本排队的业务分离,脚本排队可以“即时”进行,并且可能受制于某种扭曲的逻辑。

    结束