CoreFlex是一个支持.NET 6
,.NET 7
,.NET 8
的快速开发框架,也提供MasaFramework
相关框架的集成提供更多功能模块, 集成了一些常用的功能模块,可以快速开发企业级应用,提供Blazor
的一些JS操作工具库。
实现目标
-
[x] JS工具操作模块 -
[ ] Serilog日志模块 -
[ ] 限流中间件模块 -
[ ] 审计日志模块 -
[ ] 虚拟文件模块(LiteDb实现和本地文件实现) -
[ ] 系统设置模块 -
[ ] 后台任务模块 -
[ ] 提供 ChatGpt
客户端案例模块
Core Flex模块
Core Flex的核心设计,Core Flex其他模块都是基于Core Flex的核心设计来实现的。 Core Flex模块提供了一些基础的功能,包括: – 模块化 – 自动依赖注入
简单使用
-
安装 NuGet
包
dotnet add package CoreFlex.Module --version 0.1.1
-
添加对应模块方法,比如项目名 CoreFlex.Razor.JsInterop
,那么模块名称则是CoreFlexRazorJsInteropModule
,这样的好处就是可以通过模块名称来查找对应的模块,而不是通过文件夹名称来查找模块,这样可以避免文件夹名称和模块名称不一致的问题。
public class CoreFlexRazorJsInteropModule : CoreFlexModule
{
public override void ConfigureServices(CoreFlexServiceContext services)
{
}
public override void OnApplicationShutdown(CoreFlexBuilder app)
{
}
}
创建的模块必须继承CoreFlexModule
,然后实现ConfigureServices
和OnApplicationShutdown
方法,这两个方法是模块的生命周期方法,ConfigureServices
方法在模块加载时调用,OnApplicationShutdown
方法在模块构建完成调用。 模块中也提供了Async
结束的异步回调,以便于在模块加载完成后,可以执行一些异步操作,比如加载一些配置文件等。 当然,如果你的模块需要使用其他的模块,你可以在模块类的上面添加特性[DependsOn(typeof(CoreFlexRazorModule))]
,CoreFlexRazorModule
则是你要依赖的模块,当然它也支持多个模块的依赖; 这样在加载模块时,会先加载CoreFlexRazorModule
模块, 但是如果没有设置特定模块执行顺序,依赖模块将在当前模块的后面执行。
[DependsOn(typeof(CoreFlexRazorModule))]
public class CoreFlexRazorJsInteropModule : CoreFlexModule
CoreFlex.Razor.JsInterop js工具库
dotnet add package CoreFlex.Razor.JsInterop --version 0.1.1
提供系统常用的JS互操作的封装,便于使用。
使用
添加CoreFlexRazorJsInteropModule
模块依赖
封装Api
CookieJsInterop
提供:
-
GetAllCookiesAsync
获取所有Cookie -
AddCookieAsync
添加Cookie`
LocalStorageJsInterop
提供:
-
SetLocalStorageAsync
设置LocalStorage的值 -
GetLocalStorageAsync
获取LocalStorage的值 -
RemoveLocalStorageAsync
移除LocalStorage的值 -
RemovesLocalStorageAsync
批量删除Key的LocalStorage -
ClearLocalStorageAsync
清空LocalStorage的值 -
IsLocalStorageSupportedAsync
判断浏览器是否支持LocalStorage -
GetLocalStorageKeysAsync
获取LocalStorage的所有Key
SessionStorageJsInterop
提供:
-
SetSessionStorageAsync
设置SessionStorage的值 -
GetSessionStorageAsync
获取SessionStorage的值 -
RemoveSessionStorageAsync
移除SessionStorage的值 -
RemovesSessionStorageAsync
批量删除Key的SessionStorage -
ClearSessionStorageAsync
清空SessionStorage的值 -
GetSessionStorageLengthAsync
获取 sessionStorage 中值的数量 -
ContainKeyAsync
判断 sessionStorage 中是否含有某个键名
WindowJsInterop
提供以下功能:
-
CreateBlobURLAsync
: 使用 blob 创建 Blob Url -
CreateBlobURLFromUint8ArrayAsync
: 使用 byte[] 创建一个 Blob 对象URL -
CreateBlobURLFromStringAsync
: 使用 Base64 创建一个 Blob 对象的URL -
RevokeUrlAsync
: 释放 Blob 对象的 URL -
RevokeUrlsAsync
: 批量释放 Blob 对象的 URL -
GetScrollPositionAsync
: 获取滚动条位置 -
SetScrollPositionAsync
: 修改滚动条位置 -
GetScrollHeightAsync
: 获取滚动条高度 -
ScrollToBottomAsync
滚动到底部 -
ScrollToTopAsync
滚动到顶部 -
CopyToClipboardAsync
复制到剪贴板 -
PlayTextAsync
播放文本 -
PauseSpeechAsync
暂停播放语音 -
ResumeSpeechAsync
继续语音播放 -
StopSpeechAsync
停止语音播放 -
EnterFullscreenAsync
进入全屏模式 -
ExitFullscreenAsync
退出全屏模式 -
IsFullscreenAsync
判断当前是否处于全屏模式 -
ToggleFullscreenAsync
切换全屏模式 -
PickContactAsync
使用 Contact Picker API 选择联系人
Core Flex 本地事件总线
本地事件总线通过Channel实现本地事件总线
添加CoreFlexEventModule
模块依赖
基本使用
-
安装 NuGet
包
<PackageReference Include="CoreFlex.Module" Version="模块版本" />
-
添加处理程序
public class TestEventHandler : ILoadEventHandler<TestEto>
{
public Task HandleAsync(TestEto eto)
{
throw new NotImplementedException();
}
public Task ExceptionHandling(Exception exception, TestEto eto)
{
throw new NotImplementedException();
}
}
public class TestEto
{
public string Value { get; set; }
}
-
提交事件
// 通过构造得到`ILoadEventBus`
await loadEvent.PushAsync(new TestEto(){
Value="test"
})
原文始发于微信公众号(token的技术分享):CoreFlex框架发布 0.1.1
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/230167.html