2014-10-23 2 views
3

Я хотел бы обслуживать некоторые статические файлы из Snaplet в фреймворке Snap. Как мне это сделать? Документация не совсем ясна.Статические файлы в Snaplet

Я знаю, как добавить маршруты и прочее, но я застрял на две проблемы:

  1. Что мне нужно, чтобы перейти к serveDirectory обслуживать файлы из каталога snaplet?
  2. Как я могу ссылаться на эти статические файлы в шаблонах Heist моего snaplet? Я, очевидно, не могу использовать абсолютные URL-адреса, так как я не знаю префикса URL. Моя привязка в конечном итоге устанавливается в конечном приложении. Другими словами, как получить URL-адрес относительно URL-адреса корневого каталога в шаблоне Heist?

ответ

2

Да, serveDirectory - это то, что вы хотели бы использовать для статических файлов. Вы могли бы иметь маршрут, как это:

route [("static", serveDirectory "myDir"), ...] 

При ссылке эти файлы шаблонов, вы должны использовать маршрут, который вы назначили. Поэтому, если у вас есть файл myDir/foo.js, то в шаблоне вы можете обратиться к нему с помощью /static/foo.js.

Если вы не знаете базовый URL-адрес вашей привязки, вы можете получить его с помощью функции getSnapletRootURL. Затем вы можете сделать это доступным в ваших шаблонах с помощью сплава Heist.

+0

А что, если snaplet не был вложен в '/', а в '/ foo /'? Как бы я справился с этим? – lunaryorn

+0

Если вышеуказанная команда маршрута находилась внутри упомянутой защелки, тогда для шаблона потребуется «/foo/static/foo.js». В противном случае никаких изменений. Основная идея заключается в том, что вы должны выяснить, какой URL-адрес вы должны поместить в свой браузер (или curl/wget), чтобы получить страницу, и поместите этот URL-адрес в свой шаблон. – mightybyte

+0

Ум, очевидно, но дело в том, что я ** не знаю ** точного префикса. Это может быть что угодно, и мне нужно разобраться ** динамически **. – lunaryorn

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