在CodeIgniter中将javascript移动到底部的策略?

Dis*_*oat 5 javascript performance codeigniter

在我的网站上,我有一个全局Javascript文件,其中包括jQuery和下拉菜单的代码等.许多页面还有针对次要页面特定交互,表格等的自定义Javascript.

我在每个视图上设置的当前header.php文件是一个文件,基本上涵盖了从doctype到内容的开始,特定页面的视图文件以及footer.php关闭页面的所有内容.

目前global.js是从中链接的<head>.为了性能,我们应该把JS放在页面的最底部,但我无法找到一个好方法来做到这一点.我可以global.js使用自定义脚本块添加完整的脚本行,但这意味着我必须在每个页面上添加它,即使没有其他Javascript.有没有更好的方法将JS移到底部?

Bre*_*dan 3

您可以将自定义 JS 放入常规变量或nowdoc (php 5.3.0+) 中,然后在页脚中回显该变量以及脚本标记(如果存在)。Nowdoc 可能更可取,因为您可以在 JS 中使用双引号和单引号,并且PHP 不会解析/转义文本。

一些视图.php:

<?php 
$custom_js = "
alert('custom js ran');
";
?>

<?php 
$custom_js = <<<'CUSTOM_JS'
alert("custom js ran (i'm in a nowdoc!)");
CUSTOM_JS;
?>
Run Code Online (Sandbox Code Playgroud)

页脚.php:

<?php if(isset($custom_js)) { ?>
    <script><?php echo $custom_js; ?></script>
<?php } ?>
Run Code Online (Sandbox Code Playgroud)

编辑2: 如果您不想将JavaScript放在字符串中,则可以将JavaScript放在单独的文件中,然后使用PHP将其作为字符串file_get_contents()加载到变量中。$custom_js

编辑: 这只是一个旁白,但您可能会考虑使用 Carabiner 库来加载 JS 和 CSS。这是一个很棒的图书馆。它可能不一定有助于解决您当前的问题,但如果您的 global.js 相当大,您可以将其拆分并使用 Carabiner 在加载时压缩/连接。我目前使用它来选择为当前 CI 项目中登录和注销的用户加载哪些 JS 和 CSS。