gpt4 book ai didi

c# - ASP.NET MVC 单例或静态类来传递数据?

转载 作者:行者123 更新时间:2023-11-30 18:07:31 25 4
gpt4 key购买 nike

我正在创建一个 Controller ,它将为我的 JavaScript 和 CSS 的组合/缩小版本提供服务。我需要在某处定义要加载的脚本/样式。

当发出请求时,例如 style.css?VersionNumberHere,它将检查合并/缩小的数据是否已经在 HttpContext.Cache 中,如果所以吐出来。否则,我需要查找构成 style.css 的定义。

我创建了一个 Script/StyleBuilder(继承自 ContentBuilder),它将存储所有需要合并然后压缩的路径(所以这就是定义style.css)。

我应该在哪里存储这些对“构建器”的引用?它们应该在静态类中还是在实现接口(interface)的单例中以便对其进行测试?

下面是抽象类ContentBuilder实现的接口(interface)(你可以很容易地想象实现):

public interface IContentBuilder : IEnumerable<string>
{
string Name { get; }
int Count { get; }
string[] ValidExtensions { get; }
void Add(string path);
bool ValidatePath(string path);
string GetHtmlReference(); // Spits out <script>, or <link> depending on implementation.
string Build(); // Minifies, combines etc.
}

这是理想情况下我希望能够用这些做的事情:

ContentBuilderContainer.Current.Add("main.js", c => new ScriptBuilder()
{
"/path/to/test.js",
"/path/to/test2.js",
"/path/to/test3.js"
});

ContentBuilderContainer.Current.Add("style.css", c => new StyleBuilder()
{
"/path/to/style.css",
"/path/to/test.less"
});

然后为所有已注册的 IContentBuilder 输出所有 HTML:

ContentBuilder.Container.Current.BuildHtml();

最佳答案

也许你应该看看 SquishIt .更多信息请参见 this blog post .我们在生产中使用它。

关于c# - ASP.NET MVC 单例或静态类来传递数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3937048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com