在我的网站上,我有一个全局Javascript文件,其中包括jQuery和下拉菜单的代码等.许多页面还有针对次要页面特定交互,表格等的自定义Javascript.
我在每个视图上设置的当前是一个header.PHP文件,基本上涵盖了从doctype到内容的开始,特定页面的视图文件以及关闭页面的footer.PHP.
目前global.js是从< head>链接的.为了性能,我们应该把JS放在页面的最底部,但我无法找到一个好方法来做到这一点.我可以使用自定义脚本块添加global.js的完整脚本行,但这意味着我必须在每个页面上添加它,即使没有其他Javascript.有没有更好的方法将JS移到底部?
最佳答案
您可以将自定义JS放在常规变量或nowdoc(PHP 5.3.0)中,然后在页脚中回显变量以及脚本标记(如果存在). Nowdoc可能更受欢迎,因为您可以在JS中使用双引号和单引号,PHP不会解析/转义文本.
someview.PHP:
PHP
$custom_js = "
alert('custom js ran');
";
?>
PHP
$custom_js = <<<'CUSTOM_JS'
alert("custom js ran (i'm in a nowdoc!)");
CUSTOM_JS;
?>
footer.PHP:
PHP if(isset($custom_js)) { ?>
PHP } ?>
编辑2:
如果你不想在字符串中包含javascript,你可以将javascript放在一个单独的文件中,然后使用PHP的file_get_contents()
将它作为字符串加载到$custom_js变量中.
编辑:
这只是旁白,但您可能会考虑使用Carabiner库来加载JS和CSS.这是一个很棒的图书馆.它可能不一定有助于你当前的问题,但如果你的global.js非常大,你可以将它拆分并使用Carabiner在加载时压缩/连接.我目前使用它来选择在我当前的CI项目中为登录和注销用户加载哪些JS和CSS.
> Carabiner on Github
> Carabiner on Sparks
> Carabiner documentation