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. vlak

    2023-7-14 题目 luogu题目传送门 题目描述 Nina 和 Emilija 正在玩一个特殊的游戏.这个游戏是在一张最开始为空白的纸上进行的.在每一个人的行动回合内,这个人会在这张纸上当前的 ...

  2. 【Bash】rm -r 与 rmdir 区别

    目录 背景 二者区别 rmdir rm -r rm -rf 测试过程 配置环境 rmdir rm -r rm -rf 参考资料 背景 今天学弟在使用 NVMe-over-TCP 时发现无法卸载 nvm ...

  3. Nextcloud 维护管理

    Nextcloud 维护管理 目录 Nextcloud 维护管理 1.管理员被禁用怎么办 2.管理员密码忘了怎么办 1.管理员被禁用怎么办 通过命令行解禁管理员用户: 方法一:通过命令行解禁管理员用户 ...

  4. 记一次 .NET 某拍摄监控软件 卡死分析

    一:背景 1. 讲故事 今天本来想写一篇 非托管泄露 的生产事故分析,但想着昨天就上了一篇非托管文章,连着写也没什么意思,换个口味吧,刚好前些天有位朋友也找到我,说他们的拍摄监控软件卡死了,让我帮忙分 ...

  5. Vue框架快速上手

    Vue基础 vue指令 内容绑定 v-text 设置标签的内容一般通过双大括号的表达式{{ }}去替换内容 {{ hello }} v-html 与v-text类似区别在于html中的结构会被解析为标 ...

  6. Python基础概要(一天快速入门)

    文章目录 一 编程与编程语言 二 编程语言分类 三 主流编程语言介绍 四 Python介绍 五 安装python解释器 六 第一个python程序 七 变量 八 用户与程序交互 九 基本数据类型 十 ...

  7. 在 Rust 中实现 Repository 仓储模式

    前言 单位上有个 Rust 项目,orm 选型很长时间都没定下来,故先设计了抽象的仓储层方便写业务逻辑. 设计抽象接口 抽象只读接口,仅读取使用,目前需求仅用查询 id.查询全部和按名称搜索,当然理应 ...

  8. springboot整合redis报错:链接失败; Unable to connect to Redis

    springboot整合redis报错:链接失败:org.springframework.data.redis.RedisConnectionFailureException: Unable to c ...

  9. Java并发编程和多线程的区别

    并发编程: 并发编程是一种编程范式,它关注的是编写能够正确和高效处理多个并发任务的程序.并发编程不仅包括多线程,还包括了处理多个独立任务的各种技术和模式,如进程.协程.分布式编程等.并发编程的目标是实 ...

  10. Go 函数多返回值错误处理与error 类型介绍

    Go 函数多返回值错误处理与error 类型介绍 目录 Go 函数多返回值错误处理与error 类型介绍 一.error 类型与错误值构造 1.1 Error 接口介绍 1.2 构造错误值的方法 1. ...