CoreFlex框架发布 0.1.1

框架描述

CoreFlex是一个支持.NET 6,.NET 7,.NET 8的快速开发框架,也提供MasaFramework相关框架的集成提供更多功能模块,

集成了一些常用的功能模块,可以快速开发企业级应用,提供Blazor的一些JS操作工具库。

实现目标

  • JS工具操作模块
  • Serilog日志模块
  • 限流中间件模块
  • 审计日志模块
  • 虚拟文件模块(LiteDb实现和本地文件实现)
  • 系统设置模块
  • 后台任务模块
  • 提供ChatGpt客户端案例模块

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"
})

CoreFlex框架发布 `0.1.1`的更多相关文章

  1. Tao 1.2.0图形框架发布

    Tao 1.2.0图形框架发布         Tao图形框架是方便在Mono和.Net环境下进行游戏相关开发的库绑定和实用工具集.目前,对以下库提供支持: Cg - [Cg website] Dev ...

  2. 迷你MVVM框架 avalonjs 0.95发布

    迷你MVVM框架 avalonjs 0.95发布 本版本最主要的改进是ms-with 深层绑定的实现,至少,avalon1.0所有重要的feature已经开发完毕,之后就是小补小漏,性能优化了. ms ...

  3. 迷你MVVM框架 avalonjs 0.85发布

    迷你MVVM框架 avalonjs 0.85发布 本版本对循环绑定做了巨大改进,感谢@soom, @limodou, @ztz, @Gaubee 提供的大量测试文件. fix scanNodes, 在 ...

  4. 迷你MVVM框架 avalonjs 0.82发布

    迷你MVVM框架 avalonjs 0.82发布 本版本最大的改进是启用全新的parser. parser是用于干什么的?在视图中,我们通过绑定属性实现双向绑定,比如ms-text="fir ...

  5. 高性能PHP框架thinkphp5.0.0 Beta发布-为API开发而设计

    ThinkPHP V5.——为API开发而设计的高性能框架 ThinkPHP5..0版本是一个颠覆和重构版本,采用全新的架构思想,引入了很多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载 ...

  6. Android 图片加载框架Glide4.0源码完全解析(二)

    写在之前 上一篇博文写的是Android 图片加载框架Glide4.0源码完全解析(一),主要分析了Glide4.0源码中的with方法和load方法,原本打算是一起发布的,但是由于into方法复杂性 ...

  7. (七):C++分布式实时应用框架 2.0

    C++分布式实时应用框架 2.0 技术交流合作QQ群:436466587 欢迎讨论交流 上一篇:(六):大型项目容器化改造 版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同 ...

  8. ML.NET 发布0.11版本:.NET中的机器学习,为TensorFlow和ONNX添加了新功能

    微软发布了其最新版本的机器学习框架:ML.NET 0.11带来了新功能和突破性变化. 新版本的机器学习开源框架为TensorFlow和ONNX添加了新功能,但也包括一些重大变化, 这也是发布RC版本之 ...

  9. 接口自动化 [授客]基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0

    基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0   by:授客 QQ:1033553122     博客:http://blog.sina.com.cn/ishou ...

  10. 基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0

    基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 目录 1. 开发环境2. 主要功能逻辑介绍3. 框架功能简介 4. 数据库的创建 5. 框架模块详细介绍6. Tes ...

随机推荐

  1. 带你读论文丨Fuzzing漏洞挖掘详细总结 GreyOne

    本文分享自华为云社区<[论文阅读] (03) 清华张超老师 - Fuzzing漏洞挖掘详细总结 GreyOne>,作者: eastmount. 一.传统的漏洞挖掘方法 演讲题目: 数据流敏 ...

  2. MySQL 使用Navicat delete/insert into/update 大量数据表锁死,kill的线程后线程处于killed状态问题解决

    MySQL 使用delete/insert into/update 大量数据表锁死,kill的线程后线程处于killed状态问题解决 实际生产环境问题描述: 使用Navicat备份BigData数据表 ...

  3. 用了这么久SpringBoot却还不知道的一个小技巧

    前言 你可能调第三方接口喜欢启动application,修改,再启动,再修改,顺便还有个不喜欢写JUnitTest的习惯. 你可能有一天想要在SpringBoot启动后,立马想要干一些事情,现在没有可 ...

  4. API接口的技术的概念

    当今互联网技术的发展越来越快,越来越多的网站和应用程序需要获取外部数据来提供更好的服务和用户体验,这就需要使用API接口.本文将会对API接口的概念.类型以及如何调用API接口进行简要介绍. 一.什么 ...

  5. js调起android安卓与ios苹果方法 vue3.0 + ts

    let shareSelect = (ev :any) => { const u :any= navigator.userAgent; const win :any = window const ...

  6. 二叉搜索树(Binary Search Tree,BST)

    二叉搜索树(Binary Search Tree,BST) 二叉搜索树(Binary Search Tree),也称二叉查找树或二叉排序树,是一种特殊的二叉树,它满足以下性质 对于二叉搜索树的每个节点 ...

  7. ES6 Module模块,在vsCode中已服务器模式运行HTML文件

    操作步骤如下: 一.安装Live Server 插件 二.点击扩展设置 三.设置live server默认打开浏览器为"chrome" 四.配置-工作区 五.在HTML文件中,右键 ...

  8. MySQL系列之——MySQL体系结构、基础管理(用户、权限管理、连接管理、多种启动方式介绍、初始化配置、多实例的应用)

    文章目录 一 体系结构 1.1 C/S(客户端/服务端)模型介绍 1.2 实例介绍 1.3 mysqld程序运行原理 1.3.1 mysqld程序结构 1.3.2 一条SQL语句的执行过程 1.3.2 ...

  9. SOA认知和方法论

    1 前言 1.1 架构分类 在软件设计领域,企业架构通常被划分为如下五种分类: 如何理解架构分类依据及其彼此之间的关系?业务是企业赖以生存之本,因此业务架构是基础.是灵魂,其他一切均是对业务架构的支撑 ...

  10. 【行云流水线实践】基于“OneBuild”方法对镜像进行快速装箱

    在云原生领域,无论使用哪种编排调度平台,Kubernetes,DockerSwarm,OpenShift等,业务都需要基于镜像进行交付,我们在内部实践"Source-to-image&quo ...