是否必须将任何类型的Javacript入队?

时间:2016-08-26 作者:Riccardo

我在页面中动态生成一些Javascript代码,这取决于许多条件,但这发生在页面的中间。正如我所读到的,作为一般规则,最好将脚本排队,我想知道这条规则是否也适用于特定于页面的脚本。例如:

$var_js = "<script type=\'text/javascript\'>// <![CDATA [\\n var username; var yearly_programme = {};var monthly_programme = {};var user_role; var timetables = {}; var topbuttons; var middlebuttons_years; var middlebuttons_courses; var bottombuttons; var regelusername; var policies; var regelpass; username = \'".$wp_username."\';user_role =\'".$role."\'; topbuttons=".json_encode($buttons_top)."; middlebuttons_years =".json_encode($buttons_middle_years)."; middlebuttons_courses =".json_encode($buttons_middle_courses)."; bottombuttons=".json_encode($buttons_bottom)."\\n// ]]>\\n</script>";
echo $var_js;
将此字符串(某些变量包含jQuery调用)保存到文件并排队是否更好?

例如,我可以删除echo 并将上述内容更改为:

$file = ABSPATH."temp/AH-".$current_user->ID.".js";
file_put_contents($file, $var_js);
add_action( \'wp_enqueue_scripts\', \'wpb_adding_scripts\' );
你觉得怎么样?

1 个回复
SO网友:Nathan Johnson

是否强制将任何类型的Javscript排队?

没有什么是强制性的,但这是良好的做法。自从WordPress 4.5以来,它实际上非常简单。

将此字符串(某些变量包含jQuery调用)保存到文件并排队是否更好?

无需编写临时文件以便将其排队。现在,我们可以使用wp_add_inline_script() 作用

你觉得怎么样?

下面是我要做的。

将动态生成的javascript与页眉中的静态部分分开,在正文中注册静态javascript,在页脚中生成动态生成的javascript,将脚本排队,静态javascript和动态生成的脚本都将放在页脚中,动态脚本放在静态文件之后。

//* Register our script that will contain all javascript 
//* that does not need to be dynamically generated
add_action( \'wp_enqueue_scripts\', \'wpse_106269_enqueue_script\' );
function wpse_106269_enqueue_script() {
  wp_register_script( \'wpse_106269\', PATH_TO . \'/script.js\' );
}

//* Dynamically generate some javascript and insert it inline
add_action( \'wp_head\', \'wpse_106269_head\' );
function wpse_106269_head() {
  $js = \'<script>alert();</script>\';
  wp_add_inline_script( \'wpse_106269\', $js );
}

//* Enqueue our script and inline javascript in the footer
add_action( \'wp_footer\', \'wpse_106269_footer\' );
function wpse_106269_footer() {
  wp_enqueue_script( \'wpse_106269\', \'\', false, false, footer = true );
}