我开始学习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,这会使它变得多余。)
答案 0 :(得分:3)
让[<Require(typeof<JQuery.Resources.JQuery>)>]
不是多余的,因为它告诉WebSharper在当前定义的资源之前始终包含JQuery。
Require
类型之一引用的程序集引用时,引用的dll中程序集级别上的 Web.Control
属性才会自动将资源添加到为特定Action返回的页面中。对于较小的范围,它的作用相同:[<Require(typeof<MyResource>)>]
在模块,函数或类型上。