CoreFlex框架发布 0.1.1
框架描述
CoreFlex是一个支持.NET 6
,.NET 7
,.NET 8
的快速开发框架,也提供MasaFramework
相关框架的集成提供更多功能模块,
集成了一些常用的功能模块,可以快速开发企业级应用,提供Blazor
的一些JS操作工具库。
实现目标
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"
})
开源地址
Gitee:https://gitee.com/hejiale010426/core-flex
Github:https://github.com/239573049/core-flex