【问题标题】:Managing resources in a sitelet管理站点中的资源
【发布时间】:2014-09-04 22:51:45
【问题描述】:

我开始学习 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 ()

文档接着说属性可以放在模块、类型和(模块级别)let 绑定上,WebSharper 将构建一个依赖关系图来确定给定页面(操作)是否需要依赖关系。我已经尝试了一些东西(使用 Twitter Bootstrap 资源声明),但我让这项工作的唯一方法是程序集属性。

有人可以举例说明(或提供链接)如何正确使用[&lt;Require&gt;] 属性,以便将其添加到一个操作上,而不是另一个?

作为参考,这里是 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")

(我知道这里的 [&lt;Require]&gt; 属性使其成为 Bootstrap 资源的依赖项,尽管我认为 WebSharper 无论如何都包含 JQuery,这会使其变得多余。)

【问题讨论】:

    标签: javascript css f# websharper


    【解决方案1】:

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

    仅当从用于页面的Web.Control 类型之一引用的程序集时,引用的 dll 中程序集级别的Require 属性不会自动将资源添加到为特定操作返回的页面中。对于较小的范围,它的工作方式相同:[&lt;Require(typeof&lt;MyResource&gt;)&gt;] 用于模块、函数或类型。

    【讨论】:

    • 我使用的是 Visual Studio 2013,您可以在其中进行编辑,同时调试,但这不起作用。当我停止并重新启动调试时,该属性按预期工作。呃,好吧。 :)
    • 感谢Require 属性的解释。现在你已经解释了它是有道理的。 :)
    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 2011-12-02
    • 2011-11-04
    • 2016-08-05
    相关资源
    最近更新 更多