Я работаю над проектом App Engine, который будет иметь настраиваемые темы. Я хотел бы иметь возможность использовать темы jQuery UI. Проблема заключается в выяснении того, какой файл CSS будет называться. (Как правило, "jquery-ui-1.7.2.custom.css". Номера версий будут меняться, и люди, как правило, переименовывают вещи, но должен быть только один файл CSS, и я в порядке, поскольку это условие ошибки, если там два или более по какой-то причине.) Поскольку это статический файл (статические файлы загружаются в App Engine отдельно от остальных ресурсов приложения), я не могу просто glob
каталог для файла CSS. Я не могу просто предположить, что он жестко закодирован, и я действительно не хочу настраивать его, потому что это плохой пользовательский интерфейс.
Гвидо сказал мне, чтобы символизировать его так, что App Engine видит две копии и может рассматривать их как статические, а другой как ресурс приложения, но символические ссылки не работают на Windows, и поскольку в конечном итоге это будет открытым исходным кодом, я могу 't контролировать, какой SDK пользователь использует. Другое предложение состояло в том, чтобы использовать время развертывания script, но пользователи Mac имеют эту симпатичную кнопку "Развернуть" в своей версии SDK, и я бы не сказал им: "О, извините за неудобства, но вы не можете использовать это для этого проекта".
Мне явно нужно готовое решение для этого, но я в недоумении. У кого-нибудь есть хорошие предложения по тому, как получить пользовательскую тему пользовательского интерфейса jQuery из ThemeRoller и в приложение App Engine? Некоторая пост-обработка уже необходима, потому что только файлы в zip файле, предоставленные ThemeRoller, находятся в каталоге "css". Может быть, я могу написать что-то, что берет необработанную тему в качестве входных данных и выплескивает что-то полезное с другой стороны (трюк развертывания script, но как-то менее недружелюбный пользователь). Трюк здесь - презентация - я хочу, чтобы пользователь потратил как можно меньше времени на командную строку. Идеальное решение предполагает, что человек, выполняющий эту задачу, по большей части нетехничен. Никакая часть решения не может быть намного сложнее, чем устанавливать что-то вроде WordPress или Drupal, и в идеальном мире это должно быть проще, проще.
Чтобы выполнить то, что вы просите, я бы использовал хранилище данных для обслуживания файлов CSS. Поскольку это позволит легко распечатывать, сортировать и даже изменять и загружать.
Кроме того, ваши следующие лучшие параметры состоят в том, чтобы хранить данные CSS внутри script (словарь, где имя файла - это имя ключа, а код CSS - это значение). Или, как вы предположили, запустить script перед развертыванием в AppEngine.
Лично я бы пошел на хранение в опции хранилища данных, так как это позволит намного больше пользовательской настройки (например, каждый пользователь может предоставить свой собственный файл CSS), просто обязательно используйте memcache, чтобы избежать необходимо, когда это возможно, получить доступ к хранилищу данных (что должно быть очень распространенным явлением), а также использовать заголовки HTTP, чтобы сообщить браузеру кэшировать файл CSS локально.