我是靠谱客的博主 迷人芒果,最近开发中收集的这篇文章主要介绍.NET虚拟文件系统TinyVFS,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

TinyVFS

nuget
stats

TinyVFS 是一个虚拟文件系统,受ABP vNext框架的启发。它可以将js、css、image、cshtml等文件嵌入到程序集中,
并在运行时可以将它们像物理文件一样去使用。

特点

  • 在单体应用中,它可以将前端和后台(管理系统)分到单独项目工程中
  • 在开发中它可以让开发人员同时进行开发不同的业务或者模块
  • 它可以让我们将系统功能模块拆分后组装到一起

快速入门

1、通过Nuget安装组件

Install-Package TinyVFS

2、注册嵌入文件

编辑web资源项目.csproj

<ItemGroup>
<EmbeddedResource Include="MyResources***.*" />
<Content Remove="MyResources***.*" />
</ItemGroup>

通过如下代码片段将文件嵌入到虚拟文件系统。

services.AddVirtualFilesService();
services.Configure<VirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<WebApplication1.Pages.IndexModel>("WebResources");
});

3、获取虚拟文件

嵌入到程序集后可通过IVirtualFileProvider来获取文件或者目录内容

public class MyService
{
private readonly IVirtualFileProvider _virtualFileProvider;
public MyService(IVirtualFileProvider virtualFileProvider)
{
_virtualFileProvider = virtualFileProvider;
}
public void Foo()
{
//Getting a single file
var file = _virtualFileProvider.GetFileInfo("/MyResources/js/test.js");
var fileContent = file.ReadAsString(); //ReadAsString is an extension method of ABP
//Getting all files/directories under a directory
var directoryContents = _virtualFileProvider.GetDirectoryContents("/MyResources/js");
}
}

4、动态监听文件

当我们在本机进行开发时,也许我们会对资源项目中的静态文件进行修改,那么常规操作可以能我们去重新生成代码.....

现在我们可以通过ReplaceEmbeddedByPhysical 来通过浏览器刷新即可获取最新的文件信息

services.AddVirtualFilesService();
services.Configure<VirtualFileSystemOptions>(options =>
{
options.FileSets.ReplaceEmbeddedByPhysical<WebApplication1.Pages.IndexModel>(
Path.Combine(WebHostEnvironment.ContentRootPath, "..\WebResources")
);
});

5、虚拟文件中间件

虚拟文件中间件用于向客户端/浏览器提供嵌入式(js, css, image ...)文件,
就像 wwwroot 文件夹中的物理(静态)文件一样. 在静态文件中间件之后添加它, 如下所示:

app.UseVirtualFiles();

如果想扩展其他文件格式那么,可使用重载方法,如下所示:

var provider = new FileExtensionContentTypeProvider();
provider.Mappings[".less"] = "text/css";
app.UseVirtualFiles(provider);

通过设置虚拟文件中间件,使在虚拟文件相同的位置放置物理文件,从而使物理文件覆盖虚拟文件成为可能。

6、ASP.NET Core集成

虚拟文件可以直接集成到ASP.NET Core中

· 虚拟文件可以像Web应用程序中的物理静态文件一样使用。
· Razor Views, Razor Pages, js, css, 图像文件和所有其他Web内容可以嵌入到程序集中并像物理文件一样使用。
· 应用程序可以覆盖模块(web资源)的虚拟文件, 就像将具有相同名称和扩展名的文件放入虚拟文件的同一文件夹中一样.

7、Views & Pages

它们不需要任何配置,可在我们应用程序中使用,当我们物理目录存在这些文件时,则覆盖虚拟文件。

项目地址:https://github.com/hueifeng/TinyVFS

最后

以上就是迷人芒果为你收集整理的.NET虚拟文件系统TinyVFS的全部内容,希望文章能够帮你解决.NET虚拟文件系统TinyVFS所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部