包括目录中的所有/javascript/*.js

时间:2011-09-16 13:35:11

标签: php javascript include

有人能告诉我在目录中包含一组文件的最佳做法吗?

例如,如果我有一个/ javascript目录,并且其中有10个javascript文件,我将如何加载整个目录?

这个问题现在没有实际意义,但供将来参考;

我使用以下内容以 相同的方式阅读文件

<?php
    session_start();

    // Auto import all js files in the directory.

            $files = glob("*.js");
            sort($files);                   

            $jsFiles = array();
            for($i = 0; $i < count($files); $i++){
                error_log('Auto-Opening: '.$files[$i]);
                $tempString = file_get_contents($files[$i]);
                //error_log('Auto-Opened Content: '.$tempString);
                array_push($jsFiles, $tempString);
            }
?>

抱歉,我想这需要澄清:

我所包含的代码用于我项目的一个完全独立的部分,它包含javascript文件目录的RAW字符串格式,用于我的处理目的。你不必担心我为什么要这样做。

可以使用它来添加script标签,并回显这些文件,但我正在寻找一种更快更优雅的方式来包含目录。与上面的代码不同(我的代码永远不会执行它的javascript。我只是从文件中创建字符串并将其发送给JS进行解析)。

请按照建议注意:

$files = glob("{directory/*.js}",GLOB_BRACE);
                for($i = 0; $i < count($files); $i++){
                    include($files[$i]);
                }

在没有script标记的情况下,只会将这些文件回显到屏幕上。

4 个答案:

答案 0 :(得分:3)

我只需在文件上调用include()而不是file_get_contents()。这有两个主要原因/好处:

  • 在输出之前,您没有将文件加载到内存中(无论如何都是PHP)。这节省了服务器资源(尽管数量相当少)。
  • 您可以将PHP代码放入JS / CSS等,并对其进行评估。这意味着您可以在服务器端预定义JS变量,通过PHP非常简单地将颜色主题应用于CSS和许多其他内容。

答案 1 :(得分:2)

别。

使用Closure compiler将您的Javascript文件编译为单个缩小的来源,并改为使用您的HTML参考。

答案 2 :(得分:1)

  

我可以使用它来添加脚本标记,并回显这些文件,但我是   寻找更快更优雅的方式来包含目录。不像   上面的代码(我的代码永远不会执行其javascript。我   只需从文件中创建字符串并将其发送给JS for   解析)。

如果您希望PHP脚本的输出以javascript的形式执行,则需要添加正确的标题:

header("Content-type: text/javascript");
foreach (glob('/path/to/files/*.js') as $file)
{
    readfile($file);
}
  

我正在将目录作为字符串读取,因为我正在进行一些解析   使用原始JS(但这与我在这里做的事情是分开的)。一世   知道使用php通过静态编码来包含一堆文件   在,我想在一个动态的目录基础上做。

除非你有某种文件命名约定,否则请记住文件的顺序基本上只限于你在文件名上使用php的数组排序功能。 JS和CSS通常非常依赖于按特定顺序执行或读取的代码或文件,因此根据您实际尝试完成的内容(仍然非常不清楚),这可能是一个糟糕的主意。

答案 3 :(得分:1)

PHP不会为您输出<script>标签。它不知道JS是什么,除了一大块文本。你的glob版本很接近,但必须是:

$files = glob("{directory/*.js}",GLOB_BRACE);
for($i = 0; $i < count($files); $i++){
    echo '<script type="text/javascript">';
    include($files[$i]);
    echo '</script>';
}