【问题标题】:Recursively generate script tags for all JavaScript files within a directory with PHP使用 PHP 为目录中的所有 JavaScript 文件递归生成脚本标签
【发布时间】:2016-07-06 08:24:42
【问题描述】:

我正在构建一个复杂的应用程序,其中包含许多子目录中的大量 JavaScript 文件。我知道我想将它们全部包含在内(它不会影响性能),但我不想为每个手动创建脚本标记。鉴于我的所有文件都是“/js”目录的子文件,我如何使用 PHP 为每个文件动态生成脚本标签?像这样的:

// first somehow recursively get all .js files, then:
foreach($files as $file) {
  echo '<script src="' . $file->path . '"></script>';
}

【问题讨论】:

  • 你得到了你正在寻找的答案,但我认为你不是在寻找你真正需要的东西。如果我猜对了,您的 js 文件都将彼此用作依赖项,因此包含它们的顺序很重要。考虑到这一点,您可以看到基于目录树递归地包含脚本可能效果不佳。您应该查看专门为此构建的解决方案,例如 requirejs

标签: javascript php file recursion tags


【解决方案1】:

在我看来,最优雅的方式是使用 SPL。

$dirIterator = new RecursiveDirectoryIterator("/path/to/js");
$iterator = new RecursiveIteratorIterator(
  $dirIterator,
  RecursiveIteratorIterator::SELF_FIRST
);

foreach ($iterator as $file) {
    if($file->getExtension() == 'js') {
      // You probably have to adjust the full path according to your DOC_ROOT
      $url = $file->getPathname();
      echo '<script src="' . $url . '"></script>';
    }
}

看看http://php.net/manual/en/class.splfileinfo.php,看看你还能用$file做什么。

【讨论】:

  • 谢谢!我发现我什至不需要 $path 变量。就是这样:“$url = '/'.$file;”
  • 我现在唯一不确定的是如何添加换行符。所有脚本文件都放在一个大段中,这很好,只是不是那么漂亮......
  • 在回显字符串的末尾添加\n
  • 喜欢这个? echo '\n';这只是回显“\n”。
猜你喜欢
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 2011-10-20
  • 2013-10-04
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多