2014-09-04 3 views
1

Я начинаю свой путь обучения WebSharper, и я нахожу управление ресурсами (например, css и javascript-файлами) немного запутанным.Управление ресурсами в профайле

documentation на это дает декларацию пример ресурс

type MyResource() = 
    inherit Resources.BaseResource("http://my.cdn.net", 
     "file1.js", "file2.js", "file3.css") 

и вы можете поместить атрибут [<Require>] на сборке, чтобы сделать ресурс на каждой странице на сайте:

[<assembly: Require(typeof<MyResource>)>] 
do() 

В документации далее говорится, что атрибут может быть размещен на модулях, типах и (уровне модуля), позволяя привязкам, а WebSharper будет строить график зависимостей для вычисления ou t, если данная страница (действие) нуждается в зависимости или нет. Я пробовал несколько вещей (используя объявление ресурса Twitter Bootstrap), но единственный способ, которым я получил эту работу, - это атрибут сборки.

Может ли кто-нибудь привести пример (или предоставить ссылку) о том, как правильно использовать атрибут [<Require>], чтобы он добавился к одному действию, но не к другому?

Для справки, вот по декларации ресурса Twitter Bootstrap:

[<Require(typeof<JQuery.Resources.JQuery>)>] 
[<Sealed>]  
type BootstrapResource() = 
    inherit Resources.BaseResource("https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/", 
            "css/bootstrap.min.css", "js/bootstrap.min.js") 

(я получаю, что [<Require]> атрибут здесь здесь делает его зависимость ресурса Bootstrap, хотя я думаю, что WebSharper включает JQuery в любом случае, что бы сделать он избыточен.)

ответ

2

Имея [<Require(typeof<JQuery.Resources.JQuery>)>], он не является избыточным, так как он сообщает WebSharper, что всегда должен включать JQuery до текущего ресурса.

Require атрибут на уровне сборки в соответствующей DLL не будет автоматически добавлять ресурс на страницу, возвращенную для конкретного действия, только если сборка ссылается на один из типов Web.Control, используемых для этой страницы. Он работает одинаково для меньшего объема: [<Require(typeof<MyResource>)>] на модуле, функции или типе.

+0

Я использую Visual Studio 2013, в котором вы можете редактировать во время отладки, но это не работает. Когда я остановился и перезапустил отладку, атрибут работал как ожидалось. Ах хорошо. :) –

+0

Спасибо за объяснение атрибута 'Require'. Теперь имеет смысл, что вы это объяснили. :) –

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