CoreFlex框架发布 `0.1.1`
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模块提供了一些基础的功能,包括:
- 模块化
- 自动依赖注入
简单使用
- 安装
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"
})
CoreFlex框架发布 `0.1.1`的更多相关文章
- Tao 1.2.0图形框架发布
Tao 1.2.0图形框架发布 Tao图形框架是方便在Mono和.Net环境下进行游戏相关开发的库绑定和实用工具集.目前,对以下库提供支持: Cg - [Cg website] Dev ...
- 迷你MVVM框架 avalonjs 0.95发布
迷你MVVM框架 avalonjs 0.95发布 本版本最主要的改进是ms-with 深层绑定的实现,至少,avalon1.0所有重要的feature已经开发完毕,之后就是小补小漏,性能优化了. ms ...
- 迷你MVVM框架 avalonjs 0.85发布
迷你MVVM框架 avalonjs 0.85发布 本版本对循环绑定做了巨大改进,感谢@soom, @limodou, @ztz, @Gaubee 提供的大量测试文件. fix scanNodes, 在 ...
- 迷你MVVM框架 avalonjs 0.82发布
迷你MVVM框架 avalonjs 0.82发布 本版本最大的改进是启用全新的parser. parser是用于干什么的?在视图中,我们通过绑定属性实现双向绑定,比如ms-text="fir ...
- 高性能PHP框架thinkphp5.0.0 Beta发布-为API开发而设计
ThinkPHP V5.——为API开发而设计的高性能框架 ThinkPHP5..0版本是一个颠覆和重构版本,采用全新的架构思想,引入了很多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载 ...
- Android 图片加载框架Glide4.0源码完全解析(二)
写在之前 上一篇博文写的是Android 图片加载框架Glide4.0源码完全解析(一),主要分析了Glide4.0源码中的with方法和load方法,原本打算是一起发布的,但是由于into方法复杂性 ...
- (七):C++分布式实时应用框架 2.0
C++分布式实时应用框架 2.0 技术交流合作QQ群:436466587 欢迎讨论交流 上一篇:(六):大型项目容器化改造 版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同 ...
- ML.NET 发布0.11版本:.NET中的机器学习,为TensorFlow和ONNX添加了新功能
微软发布了其最新版本的机器学习框架:ML.NET 0.11带来了新功能和突破性变化. 新版本的机器学习开源框架为TensorFlow和ONNX添加了新功能,但也包括一些重大变化, 这也是发布RC版本之 ...
- 接口自动化 [授客]基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 by:授客 QQ:1033553122 博客:http://blog.sina.com.cn/ishou ...
- 基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 目录 1. 开发环境2. 主要功能逻辑介绍3. 框架功能简介 4. 数据库的创建 5. 框架模块详细介绍6. Tes ...
随机推荐
- 3.你不知道的go语言控制语句
目录 本篇前瞻 Leetcode习题9 题目描述 题目分析 代码编写 知识点归纳 控制结构 顺序结构(Sequence) 声明和赋值 算术运算符 位运算符 逻辑运算 分支结构 if 语句 switch ...
- Go 并发编程 - runtime 协程调度(三)
Go Runtime Go runtime 可以形象的理解为 Go 程序运行时的环境,类似于 JVM.不同于 JVM 的是,Go 的 runtime 与业务程序直接打包在一块,是一个可执行文件,直接运 ...
- 基于 JMeter API 开发性能测试平台
背景: JMeter 是一个功能强大的性能测试工具,若开发一个性能测试平台,用它作为底层执行引擎在合适不过.如要使用其API,就不得不对JMeter 整个执行流程,常见的类有清楚的了解. 常用的 JM ...
- 数据api接口就是应用集成吗?
数据 API 接口和应用集成是两个不同的概念,但是它们之间有一定的联系.数据 API 接口是一种用于访问和传输数据的标准化接口,而应用集成则是将不同的应用程序和系统整合在一起,实现数据和业务流程的 ...
- 【题解】AtCoder Beginner Contest 318(D - Ex)
赛时过了 A-G,Ex 仿佛猜到了结论但是完全不懂多项式科技,就炸了. 大家好像都秒了 A,B,C 就不写了. D.General Weighted Max Matching 题目描述: 给你一个加权 ...
- 关于TCP 四次挥手过程中的reset包问题
数据包过程 TCP状态机转换过程 客户端在接受到第32个数据包之后,应该发送1个对FIN的ACK数据包,然而客户端缺直接连续发送了3个Rest数据包36~38,客户端并未进入time wait阶段,直 ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-16-处理模态对话框弹窗
1.简介 我们在日常工作中,会经常遇到弹出警告框的问题,弹框无法绕过,必须处理才可以执行后续的测试,所以弹框处理也是我们必须掌握的一个知识.宏哥在java+selenium系列文章中介绍过这部分内容. ...
- SpringBoot进阶 CommandLineRunner 初始化配置
在Spring Boot中,CommandLineRunner接口用于在应用程序启动后执行一些特定的命令行操作.通过实现CommandLineRunner接口,您可以在Spring Boot应用程序运 ...
- 解决 Steam 无法自动登录的问题
前言 劳动节假期闲的没事,重装一下电脑,结果电脑的 Steam 不会自动登录了,每次重启电脑就要重新输入密码和令牌.查了一下居然是 Windows 凭据管理器默认不会自动启动的问题. 解决方法 打开计 ...
- [C++]P3379 LCA 最近公共祖先
最近公共祖先 LCA 倍增写法 LCA的倍增主要由三个重要的过程组成 预处理lg数组 DFS求fa depth 倍增节点 观看以下内容前建议先把完整代码大致纵览一遍,有利于理解各个函数的意义 倍增思想 ...