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
獲取所有CookieAddCookieAsync
新增Cookie`
LocalStorageJsInterop
提供:
SetLocalStorageAsync
設定LocalStorage的值GetLocalStorageAsync
獲取LocalStorage的值RemoveLocalStorageAsync
移除LocalStorage的值RemovesLocalStorageAsync
批次刪除Key的LocalStorageClearLocalStorageAsync
清空LocalStorage的值IsLocalStorageSupportedAsync
判斷瀏覽器是否支援LocalStorageGetLocalStorageKeysAsync
獲取LocalStorage的所有Key
SessionStorageJsInterop
提供:
SetSessionStorageAsync
設定SessionStorage的值GetSessionStorageAsync
獲取SessionStorage的值RemoveSessionStorageAsync
移除SessionStorage的值RemovesSessionStorageAsync
批次刪除Key的SessionStorageClearSessionStorageAsync
清空SessionStorage的值GetSessionStorageLengthAsync
獲取 sessionStorage 中值的數量ContainKeyAsync
判斷 sessionStorage 中是否含有某個鍵名
WindowJsInterop
提供以下功能:
CreateBlobURLAsync
: 使用 blob 建立 Blob UrlCreateBlobURLFromUint8ArrayAsync
: 使用 byte[] 建立一個 Blob 物件URLCreateBlobURLFromStringAsync
: 使用 Base64 建立一個 Blob 物件的URLRevokeUrlAsync
: 釋放 Blob 物件的 URLRevokeUrlsAsync
: 批次釋放 Blob 物件的 URLGetScrollPositionAsync
: 獲取捲軸位置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