Включая все /javascript/*.js из каталога - PullRequest
0 голосов
/ 16 сентября 2011

Может кто-нибудь сказать мне, как лучше всего включить набор файлов в каталог?

Например, если бы у меня был каталог / 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);
            }
?>

Извините, я думаю, что это требует уточнения:

Код, который я включил, используется в совершенно отдельной части моего проекта, он включает формат строки RAWкаталога файлов JavaScript для моих целей обработки.Вам не нужно беспокоиться о том, почему я это делаю.

Я мог бы использовать это для добавления script тегов и отображения этих файлов, но я ищу более быстрый и элегантныйспособ включить каталог.В отличие от приведенного выше кода (чей javascript никогда не исполняется моим кодом. Я просто создаю строку из файлов и отправляю ее в JS для анализа).

Пожалуйста, обратите внимание, как предложено:

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

Только выводит эти файлы на экран без тегов script.

Ответы [ 4 ]

3 голосов
/ 16 сентября 2011

Я бы просто назвал include() для файлов, а не file_get_contents(). Это по двум основным причинам / преимуществам:

  • Вы не загружаете файлы в память (во всяком случае, в PHP) перед их выводом. Это экономит ресурсы сервера (хотя и довольно небольшое).
  • Вы можете поместить PHP-код в свой JS / CSS и т. Д. И проверить его. Это означает, что вы можете предопределять переменные JS на стороне сервера, применять цветовые темы к вашему CSS и множество других вещей очень просто с помощью PHP.
2 голосов
/ 16 сентября 2011

Не.

Скомпилируйте ваши файлы Javascript в единый минимизированный источник, используя Closure компилятор , и вместо этого получите HTML-ссылку.

1 голос
/ 16 сентября 2011

PHP не будет выводить <script> теги для вас.Он понятия не имеет, что такое JS, кроме куска текста.Ваша глобальная версия близка, но должна быть:

$files = glob("{directory/*.js}",GLOB_BRACE);
for($i = 0; $i < count($files); $i++){
    echo '<script type="text/javascript">';
    include($files[$i]);
    echo '</script>';
}
1 голос
/ 16 сентября 2011

Я мог бы использовать это для добавления тегов сценария и отображения этих файлов, но я ищу более быстрый и элегантный способ включения каталога.В отличие от приведенного выше кода (чей javascript никогда не выполняется моим кодом. Я просто создаю строку из файлов и отправляю ее в JS для анализа).

Если вы хотите, чтобы вывод сценария PHP выполнялсячтобы выполнить его как javascript, вам нужно добавить правильный заголовок:

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

Я читаю каталог как строки, потому что я делаю какой-то анализ с необработанным JS (но это отдельно от того, что яя здесь делаю).Я знаю, как использовать php для включения нескольких файлов путем их статического кодирования, я хочу делать это на основе каталогов, которая является динамической.

Если у вас нет какого-либо соглашения о присвоении именПомните, что порядок файлов будет в основном ограничен тем, что вы можете делать с функциями сортировки массивов php по именам файлов.JS и CSS часто очень зависят от кода или файлов, выполняемых или читаемых в определенном порядке, поэтому в зависимости от того, что вы на самом деле пытаетесь достичь (все еще очень неясно), это может быть ужасной идеей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...