2009-06-09 3 views
8

Я использую yuicompressor.jar на своем тестовом сервере для минимизации измененных файлов JavaScript на лету. Теперь, когда я развернул сайт на общедоступном сервере, я заметил, что политики сервера запрещают использование exec() или его эквивалентов, поэтому для меня больше нет java-исполнения.YUICompressor или аналогичный в PHP?

Есть ли достойный компрессор JS на лету, реализованный на PHP? Единственное, что мне удалось найти, это Minify, но это скорее полномасштабное решение для сжатия с кешем и всем остальным. Я хочу, чтобы файлы были раздельными, и файлы с минимизацией следуют моим собственным соглашениям об именах, поэтому Minify для вас слишком сложна.

Инструмент, такой как yuicompressor, должен иметь возможность ввода имени файла или JavaScript в качестве входных данных и должен либо записывать в файл, либо выводить сжатый JavaScript.

EDIT: Чтобы уточнить, я ищу что-то, что не обязательно должно использоваться как автономное (т. Е. Его можно вызывать из функции, а не обнюхивать мои переменные GET). Если бы я просто хотел компрессор, Minify, очевидно, был бы хорошим выбором.

EDIT2: За пять лет с тех пор, как я задал этот вопрос, многое изменилось. Сегодня я настоятельно рекомендую отделить интерфейсный рабочий процесс от кода сервера. Есть много хороших инструментов для разработки JS вокруг и за исключением самых тривиальных улучшений jQuery, это лучшая идея иметь полный рабочий процесс с автоматическим связыванием, тестированием и линией на месте и просто развертывать мини-пакеты, а не сырые файлы.

ответ

6

Да, это называется minify.

Единственная вещь, о которой нужно беспокоиться, поскольку это сложность заключается в создании группы , и ей действительно нечего. Отредактируйте файл groupsConfig.php, если вы хотите использовать несколько JS/CSS в одной <script> или <link> заявления:

return array(
    'js-common' => array('//js/jquery/jquery-1.3.2.min.js', '//js/common.js', '//js/visuals.js', 
'//js/jquery/facebox.js'), 
    'css-common' => array('//css/main.css', '//css/layout.css','//css/facebox.css') 
); 

Чтобы включить выше 'JS-общего' группу, сделайте следующее:

<script type="text/javascript" src="/min/g=js-common"></script> 
+1

Как я уже говорил. Я не могу найти способ запустить minify из приложения. Heck, он даже ожидает, что некоторые параметры GET будут установлены, а не будут принимать имя файла в качестве аргумента. Это, наверное, хорошо, но не то, что я ищу. –

+0

Minify не является сложным. У вас может быть определенный файл, минитированный, просто используя что-то вроде karim79

+1

Это сложный с точки зрения «API». На самом деле на самом деле нет. Это автономный инструмент, который читает суперглобалы для ввода. Если вы можете указать мне на оболочку, которая позволяет мне использовать Minify из приложения, это будет допустимый вариант. –

0

Lissa Попробуйте :

Lissa - это универсальная утилита для загрузки CSS и JavaScript. Lissa является расширением YUI PHP Loader, направленным на решение одного из ограничений текущего загрузчика; комбинированная загрузка. YUI PHP Loader поставляется с комбо-загрузчиком, который способен уменьшать HTTP-запросы и повышать производительность, выведя все требования JavaScript и/или CSS YUI в виде единого запроса на тип ресурса. Значение, даже если вам нужны 8 компонентов YUI, которые в конечном итоге сводятся к 13 файлам, вы все равно будете делать только 2 HTTP-запроса; один для CSS и другой для JavaScript. Это здорово, но как насчет пользовательских ресурсов, отличных от YUI. YUI PHP Loader будет загружать их, но загружает их как отдельные, и, следовательно, они пропускают преимущества комбинированного сервиса и количество HTTP-запросов для страницы увеличивается. Lissa работает над этим ограничением, используя YUI PHP Loader для обработки загрузки и сортировки зависимостей YUI и/или настраиваемых ресурсов и пар, которые работают с Minify.

3

(я знаю, что я искал ту же самую вещь, не зная, как иметь дело непосредственно с файлом баночки с использованием PHP - это, как я оказался здесь, так что я делю, что я нашел)

Минимизировать это огромная библиотека с множеством функциональных возможностей.Однако Минимизация часть представляет собой очень маленький класс: http://code.google.com/p/minify/source/browse/trunk/min/lib/Minify/YUICompressor.php

& очень и очень проста в использовании:

//set the path to the jar file 
Minify_YUIcompressor::$jarFile=_ROOT.'libs/java/yuicompressor.jar'; 
//set the path to a writable temp folder 
Minify_YUIcompressor::$tempDir=_ROOT.'temp/'; 

//minify 
$yourcssminified=Minify_YUIcompressor::minifyCss($yourcssstringnotminified,$youroptions) 

же процесс для JS, если вам нужно больше функциональных возможностей просто выбрать из библиотеки & прочитать источник, чтобы увидеть как вы можете совершать прямой вызов из своего приложения.

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

Минимизировать также включают другие методы Минимизация чем Юи, например, :

http://code.google.com/p/minify/source/browse/trunk/min/lib/JSMinPlus.php?r=443&spec=svn468

+0

Ваша первая ссылка не работает для меня. Я использовал https://code.google.com/p/minify/source/browse/min/lib/Minify/YUICompressor.php – Aust

Смежные вопросы