CoreFlex框架釋出 `0.1.1`

2023-12-11 06:00:31

CoreFlex框架釋出 0.1.1

框架描述

CoreFlex是一個支援.NET 6,.NET 7,.NET 8的快速開發框架,也提供MasaFramework相關框架的整合提供更多功能模組,
整合了一些常用的功能模組,可以快速開發企業級應用,提供Blazor的一些JS操作工具庫。

實現目標

Core Flex模組

Core Flex的核心設計,Core Flex其他模組都是基於Core Flex的核心設計來實現的。
Core Flex模組提供了一些基礎的功能,包括:
- 模組化
- 自動依賴注入

簡單使用

  1. 安裝NuGet
dotnet add package CoreFlex.Module --version 0.1.1
  1. 新增對應模組方法,比如專案名CoreFlex.Razor.JsInterop,那麼模組名稱則是CoreFlexRazorJsInteropModule,這樣的好處就是可以通過模組名稱來查詢對應的模組,而不是通過資料夾名稱來查詢模組,這樣可以避免資料夾名稱和模組名稱不一致的問題。
public class CoreFlexRazorJsInteropModule : CoreFlexModule
{
    public override void ConfigureServices(CoreFlexServiceContext services)
    {
    }

    public override void OnApplicationShutdown(CoreFlexBuilder app)
    {
    }
}

建立的模組必須繼承CoreFlexModule,然後實現ConfigureServicesOnApplicationShutdown方法,這兩個方法是模組的生命週期方法,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模組依賴

基本使用

  1. 安裝NuGet
<PackageReference Include="CoreFlex.Module" Version="模組版本" />
  1. 新增處理程式
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; }
}
  1. 提交事件
// 通過構造得到`ILoadEventBus`

await loadEvent.PushAsync(new TestEto(){
    Value="test"
})

開源地址

Gitee:https://gitee.com/hejiale010426/core-flex
Github:https://github.com/239573049/core-flex