2009-11-24 4 views
3

Хотя я использую структуру Zend, библиотека MooTools JS и мои вопросы вращаются вокруг них, это более общий вопрос.Динамическая загрузка JavaScript с сжатием

Я работаю над веб-приложением, в котором я использую много элементов, которые иногда полезны на других страницах (например, классы MooTools, связанные с OpenLayers).

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

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

Является ли кто-нибудь с использованием аналогичного динамического загрузочного решения JS «Class»?

Приветствие, Roman

ответ

1

Я думаю, что инструмент, который вы хотите посмотреть, это проект minify. Вот описание:

Minify является PHP5 приложение, которое поможет вам следовать несколько Yahoo 's Rules for High Performance Web Sites!.

Он сочетает в себе несколько CSS или Javascript файлы, удаляет ненужные пробелы и комментарии, и обслуживает их с кодировкой GZIP и оптимальные на стороне клиента заголовки кэша.

Это очень проста в использовании, и, скажем, он установлен в http://example.com/min/, и у вас есть два файла для сжатия:

  • /ресурсы/JS/Библиотека/библиотека.JS
  • /resources/js/main.js

Вы бы назвали этот адрес:

http://example.com/min/b=resources/js&f=lib/library.js,main.js

И код выглядит следующим образом:

<script type="text/javascript" 
    src="/min/b=resources/js&amp;f=lib/library.js,main.js"></script> 

Таким образом, в основном существует согласованный метод URI для объединения файлов р.

+0

Хм .. это выглядит очень многообещающе, я собирался написать это сам , посмотрит, если это будет хорошо, спасибо! – 2009-12-01 12:57:00

+0

Я закончил тем, что использовал инструмент «depender» для mootools, но ваш ответ был также хорош, поэтому я выберу его как правильный. – 2009-12-24 16:24:31

0

Я не знаком с Зенд и только немного знаком с MooTools так возьмите это с большим, чем в среднем зерна соли.

Не было бы проще иметь процесс, который генерирует/минимизирует все возможные комбинации классов, которые у вас есть, а затем просто запрашивает конкретную комбинацию? Вы можете легко автоматизировать это с помощью скрипта.

Кроме того, я использовал плагины HyperCache и WP_Minify для Wordpress, и они делают почти все, о чем вы говорите, поэтому можете захотеть там найти вдохновение.

+0

Действительно, я мог бы сделать это, это будет вторая часть одного из вариантов, когда я использую LABjs рядом с решением, подобным последнему. НО, так как это компонент WordPress, мне нужно написать свой собственный модуль. В конце концов, я мог бы пойти с этой опцией, так как я бы предположил, что обслуживание статических файлов будет быстрее – 2009-11-24 16:16:09

0

Что вы описываете, это то, что делает YUI PHP Loader, хотя оно предназначено для библиотеки JavaScript YUI. Тем не менее, проект является открытым исходным кодом под лицензией BSD, поэтому это хорошее место, чтобы получить некоторые идеи для реализации своих собственных.

Также обратите внимание на Lissa (который основан на загрузчике YUI PHP), который является универсальным загрузчиком JavaScript (и CSS).