管理sitelet中的资源

时间:2014-09-04 06:50:44

标签: javascript css f# websharper

我开始学习WebSharper,并且我发现管理资源(例如css和javascript文件)有点令人困惑。

documentation上的{{3}}给出了示例资源声明

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

您可以在程序集上放置[<Require>]属性,以使资源显示在网站的每个页面上:

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

文档接着说该属性可以放在模块,类型和(模块级别)上,让绑定和WebSharper构建一个依赖图,以确定给定页面(Action)是否需要依赖。我尝试了一些事情(使用Twitter Bootstrap资源声明),但我完成这项工作的唯一方法是汇编属性。

有人可以提供一个示例(或提供一个链接),说明如何正确使用[<Require>]属性,以便将其添加到一个Action上,而不是另一个,

供参考,以下是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,这会使它变得多余。)

1 个答案:

答案 0 :(得分:3)

[<Require(typeof<JQuery.Resources.JQuery>)>]不是多余的,因为它告诉WebSharper在当前定义的资源之前始终包含JQuery。

仅当从用于页面的Require类型之一引用的程序集引用时,引用的dll中程序集级别上的

Web.Control属性才会自动将资源添加到为特定Action返回的页面中。对于较小的范围,它的作用相同:[<Require(typeof<MyResource>)>]在模块,函数或类型上。