摘要: [MAUI]集成富文本编辑器Editor.js至.NET MAUI Blazor项目 @目录获取资源从源码构建从CDN获取获取扩展插件创建项目创建控件创建Blazor组件初始化保存销毁编写渲染逻辑实现只读/编辑功能切换模式获取只读模式状态响应切换事件实现明/暗主题切换项目地址 Editor.js 是一个基于 Web 的所见即所得富文本编辑器,它由CodeX团队开发。之前写过一篇博文专 阅读全文
posted @ 2024-04-13 23:52 林晓lx 阅读(678) 评论(2) 推荐(10) 编辑
摘要: [MAUI]模仿哔哩哔哩的一键三连 @目录创建弧形进度条绘制弧准备物料创建气泡创建手势创建交互与动效项目地址 哔哩哔哩(Bilibili)中用户可以通过长按点赞键同时完成点赞、投币、收藏对UP主表示支持,后UP主多用“一键三连”向视频浏览者请求对其作品同时进行点赞、投币、收藏。 “三连按钮”是一组按钮,轻击时当做普通状态按钮使用,当长 阅读全文
posted @ 2024-03-25 19:43 林晓lx 阅读(423) 评论(3) 推荐(10) 编辑
摘要: [MAUI]集成高德地图组件至.NET MAUI Blazor项目 @目录前期准备:注册高德开发者并创建 key登录控制台创建 key获取 key 和密钥创建项目创建JS API Loader配置权限创建定义创建模型创建地图组件创建交互逻辑项目地址 地图组件在手机App中常用地理相关业务,如查看线下门店,设置导航,或选取地址等。是一个较为常见的组件。 在.NET M 阅读全文
posted @ 2024-03-23 21:58 林晓lx 阅读(2616) 评论(6) 推荐(21) 编辑
摘要: [.NET项目实战] Elsa开源工作流组件应用(三):实战演练 目录补充需求描述需求分析代码实现下发问卷活动 PublishQuestionnaireActivity通知活动:NotificationActivity等待问卷完成活动:WaitFillInSurveyActivity定时和延时活动:问卷活动:QuestionnaireActivity创建工作流开始 阅读全文
posted @ 2024-03-21 15:58 林晓lx 阅读(602) 评论(8) 推荐(8) 编辑
摘要: [.NET项目实战] Elsa开源工作流组件应用(二):内核解读 @目录定义变量内存寄存器类寄存器中的存储区块类变量到存储的映射类上下文对象活动上下文(ActivityExecutionContext)工作流执行上下文(WorkflowExecutionContext)表达式执行上下文(ExpressionExecutionContext)构建构建活动构建工作流运 阅读全文
posted @ 2024-03-20 11:53 林晓lx 阅读(706) 评论(4) 推荐(11) 编辑
摘要: 深度观察2024中国系统架构师大会(SACC) 今年的中国系统架构师大会(SACC)在我所在的城市广州举办,很荣幸受邀参加。这次能接触到国内最优秀的架构师,学习他们的架构思想和行业经验。对我而言非常有意义。 大会分为上下午共4场,我参加了上午的多云多活架构设计专场和下午的AIGC专场。 本篇文章就多云多活架构设计专场,我选取几位老师的观点进行分享 阅读全文
posted @ 2024-03-19 14:34 林晓lx 阅读(309) 评论(0) 推荐(1) 编辑
摘要: [.NET项目实战] Elsa开源工作流组件应用(一): Elsa工作流简介 Elsa工作流简介 工作流是什么? 引用维基百科中对工作流的解释: 是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算 Elsa 是一个功能强大的工作流库,支持在任何 .NET 应用程序 阅读全文
posted @ 2024-03-15 17:21 林晓lx 阅读(779) 评论(4) 推荐(8) 编辑
摘要: 开源好用的所见即所得(WYSIWYG)编辑器:Editor.js @目录特点基于区块干净的数据界面与交互插件标题和文本图片列表Todo表格使用安装创建编辑器实例配置工具本地化自定义样式 今天介绍一个开源好用的Web所见即所得(WYSIWYG)编辑器:Editor.js Editor.js 是一个基于 Web 的所见即所得富文本编辑器,它由CodeX团队开发。源代码 阅读全文
posted @ 2024-03-11 18:42 林晓lx 阅读(667) 评论(0) 推荐(2) 编辑
摘要: 在macOS中搭建.NET MAUI开发环境 @目录准备安装扩展安装 .NET安装工作负载安装 Xcode 命令行工具调试安卓应用安装 JDK安装 Android SDK安装 Android 模拟器安装模拟器安装镜像创建虚拟机同意许可条款创建 MAUI 项目调试 MAUI 应用切换调试目标参考资料 准备 一台 macOS Monterey 以上 阅读全文
posted @ 2023-12-31 00:21 林晓lx 阅读(582) 评论(0) 推荐(5) 编辑
摘要: @目录原理创建分布式事件总线实现自动订阅和事件转发使用启动Redis服务配置传递Abp默认事件传递自定义事件项目地址 原理 本地事件总线是通过Ioc容器来实现的。 IEventBus接口定义了事件总线的基本功能,如注册事件、取消注册事件、触发事件等。 Abp.Events.Bus.EventBus是 阅读全文
posted @ 2023-12-20 17:14 林晓lx 阅读(495) 评论(0) 推荐(7) 编辑
摘要: 拷贝数据库文件 首先在本地运行如下SQL语句,查看数据库文件的磁盘位置 SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files 默认是保存在C:\Program Files\Microsoft S 阅读全文
posted @ 2023-12-20 17:12 林晓lx 阅读(33) 评论(0) 推荐(1) 编辑
摘要: @目录原理:创建Docker网桥网络安装DinD创建镜像构建镜像运行容器 原理: Docker in Docker (以下简称 DinD)可以在 Container 中直接运行一个 Docker Daemon ,然后使用 Container 中的 Docker CLI 工具操作容器。其原理如下图 容 阅读全文
posted @ 2023-12-12 17:12 林晓lx 阅读(84) 评论(0) 推荐(1) 编辑
摘要: 将ECharts图表插入到Word文档中 @目录在后端调用JS代码准备ECharts库生成Word文档项目地址库封装本文示例 EChartsGen_DocTemplateTool_Sample 如何通过ECharts在后台生成图片,然后插入到Word文档中? 首先要解决一个问题:总所周知,ECharts是前端的一个图表库,如何在后台调用JS 阅读全文
posted @ 2023-11-15 11:26 林晓lx 阅读(721) 评论(1) 推荐(4) 编辑
摘要: DocTemplateTool - 可根据模板生成word或pdf文件的工具 你是否经常遇到这样的场景:产品运营有着大量的报告需求,或者给客户领导展现每周的运营报告?这些文档类的任务可以交给运营同事,他们负责文档排版和样式,你作为开发人员你只需要提供数据源,和一个映射表,告诉制作文档的人哪些字段可供使用。这样一来分工明确,减少了很多不必要的沟通成本。 Document Tem 阅读全文
posted @ 2023-11-07 19:06 林晓lx 阅读(774) 评论(1) 推荐(6) 编辑
摘要: @目录类型约束基本类型联合类型控制流分析instanceof和typeof类型守卫和窄化typeof判断instanceof判断in判断内建函数,或自定义函数赋值布尔运算保留共同属性字面量类型(literal type)as const 作用 类型约束 TypeScript中的类型是一种用于描述变量 阅读全文
posted @ 2023-11-01 18:53 林晓lx 阅读(239) 评论(0) 推荐(2) 编辑
摘要: @目录基础知识创建类型类的初始化类型和值JSDoc 注释字段私有字段可选和非可选字段字段类型约束Getter/Setter静态成员函数重载构造函数参数属性类的实例化箭头函数this的作用域全局类和对象方法泛型泛型类泛型接口泛型函数装饰器 基础知识 创建类型 class Abc { } 类的初始化 c 阅读全文
posted @ 2023-10-31 21:34 林晓lx 阅读(215) 评论(0) 推荐(2) 编辑
摘要: ExcelPatternTool 开箱即用的Excel工具包现已发布! 应用系统开发中少不了跟Excel打交道,基于NPOI开发了ExcelPatternTool,与目前主流框架对比ExcelPatternTool着重单元格样式的控制,对于初始数据导入、报表导出等简单的Excel功能提升易用性。 阅读全文
posted @ 2023-10-25 18:31 林晓lx 阅读(1474) 评论(2) 推荐(17) 编辑
摘要: [MAUI]深入了解.NET MAUI Blazor与Vue的混合开发 @目录Vue在混合开发中的特点创建MAUI项目创建Vue应用使用element-ui组件库JavaScript和原生代码的交互传递根组件参数从设备调用Javascript代码从Vue页面调用原生代码读取设备信息项目地址 .NET MAUI结合Vue的混合开发可以使用更加熟悉的Vue的语法代替Blaz 阅读全文
posted @ 2023-10-18 17:15 林晓lx 阅读(3583) 评论(9) 推荐(13) 编辑
摘要: [MAUI]实现动态拖拽排序网格 @目录创建页面元素创建可绑定对象创建绑定服务类拖拽(Drag)拖拽悬停,经过(DragOver)释放(Drop)限流(Throttle)和防抖(Debounce)项目地址 上一章我们使用拖放(drag-drop)手势识别实现了可拖拽排序列表,对于列表中的条目,完整的拖拽排序过程是: 手指触碰条目 - 阅读全文
posted @ 2023-09-18 17:57 林晓lx 阅读(2584) 评论(4) 推荐(11) 编辑
摘要: [MAUI]在.NET MAUI中实现可拖拽排序列表 [toc] .NET MAUI 中提供了拖放(drag-drop)手势识别器,允许用户通过拖动手势来移动控件。在这篇文章中,我们将学习如何使用拖放手势识别器来实现可拖拽排序列表。在本例中,列表中显示不同大小的磁贴(Tile)并且可以拖拽排序。 ![在这里插入图片描述](https://img2023 阅读全文
posted @ 2023-08-15 14:33 林晓lx 阅读(2236) 评论(3) 推荐(22) 编辑
摘要: 假设需要通过SignalR发送消息通知,并在前端接收消息通知的功能 ## 创建SignalR服务 在项目中引用 ``` abp add-package Volo.Abp.AspNetCore.SignalR ``` 在Module文件中添加对模块依赖 ``` [DependsOn( ... type 阅读全文
posted @ 2023-08-03 17:48 林晓lx 阅读(540) 评论(0) 推荐(2) 编辑
摘要: [toc] 使用数据库的创建时间作为查询依据,在Abp框架中,实体类实现ICreationAuditedObject接口,或继承CreationAuditedEntity类,使用仓储创建记录时将自动生成CreationTime。 ## 实现 定义按创建日期范围查询(IDateSpanOriented 阅读全文
posted @ 2023-07-22 22:02 林晓lx 阅读(612) 评论(0) 推荐(3) 编辑
摘要: @[toc] ## 原理 回收站是当用户删除一条记录时,不是直接从数据库中删除,而是将其放入“回收站”,以便用户可以在需要时恢复数据。 在Abp框架中,若实体实现了ISoftDelete,则将实体标记为删除时不是物理删除,而是“软删除” ``` public interface ISoftDelet 阅读全文
posted @ 2023-07-20 08:58 林晓lx 阅读(502) 评论(0) 推荐(3) 编辑
摘要: @[toc] 用户关系(Relation)是描述业务系统中人员与人员之间的关系,如:签约、关注,或者朋友关系。 之前我们在扩展身份管理模块的时候,已经实现了用户关系管理,可以查看本系列博文之前的内容。[怎样优雅地增删查改(二):扩展身份管理模块](https://www.cnblogs.com/je 阅读全文
posted @ 2023-07-19 09:12 林晓lx 阅读(451) 评论(0) 推荐(2) 编辑
摘要: @[toc] ## 实现 定义按用户查询(IUserOrientedFilter)接口 ``` public interface IUserOrientedFilter { public string EntityUserIdIdiom { get; } Guid? UserId { get; se 阅读全文
posted @ 2023-07-18 11:30 林晓lx 阅读(484) 评论(0) 推荐(1) 编辑
摘要: @[toc] ## 实现 定义按任意字段关键字查询过滤器(IKeywordOrientedFilter)接口,查询实体列表Dto若实现该接口,将筛选指定的目标字段(TargetFields)包含指定的关键字(Keyword)的实体。 ``` public interface IKeywordOrie 阅读全文
posted @ 2023-07-14 08:54 林晓lx 阅读(640) 评论(2) 推荐(5) 编辑
摘要: @[toc] 之前我们实现了Employee,Alarm管理模块以及通用查询应用层。 Employee的集合查询业务,是通过重写CreateFilteredQueryAsync方法,来实现按组织架构查询的过滤条件。 我们将这段逻辑代码提取到通用查询应用层中,便可实现在任何业务的按组织架构查询。 ## 阅读全文
posted @ 2023-07-13 19:43 林晓lx 阅读(382) 评论(0) 推荐(1) 编辑
摘要: @[toc] 上一章我们实现了Employee管理模块,Employee的增删改查是通过其应用服务类,继承自Abp.Application.Services.CrudAppService实现的。 我们将封装通用的应用层,接口以及控制器基类。 ## 创建通用查询抽象层 创建接口ICurdAppServ 阅读全文
posted @ 2023-07-13 10:46 林晓lx 阅读(563) 评论(0) 推荐(4) 编辑
摘要: @[toc] ## 创建业务用户 区别于身份管理模块(Identity模块)的鉴权用户IdentityUser,业务用户(BusinessUser)是围绕业务系统中“用户”这一定义的领域模型。如:在一个医院系统中,业务用户可以是医生、护士、患者;在一个OA系统中,业务用户可以是员工、管理员、客户等。 阅读全文
posted @ 2023-07-12 19:23 林晓lx 阅读(422) 评论(0) 推荐(1) 编辑
摘要: @[toc] 身份管理模块(Identity模块)为通用查询接口的按组织架构查询和按户关系查询提供查询依据。 身份管理模块的领域层依赖Volo.Abp.Identity.Domain ![在这里插入图片描述](https://img2023.cnblogs.com/blog/644861/20230 阅读全文
posted @ 2023-07-08 20:11 林晓lx 阅读(428) 评论(0) 推荐(2) 编辑
摘要: @[toc] 软件系统中数据库或者持久层的基本操作功能可以用Curd描述,Curd即 增加(Create)、更新(Update)、读取查询(Retrieve)和删除(Delete), 这4个单词的首字母。 在常见的业务系统中,对数据的大部分操作都是Curd,在实践的过程中对数据的筛选、排序、分页、关 阅读全文
posted @ 2023-07-07 19:04 林晓lx 阅读(639) 评论(6) 推荐(7) 编辑
摘要: Vue + Volo.Abp 实现OAuth2.0客户端授权模式认证 @[toc] Volo.Abp的[身份服务器模块](https://docs.abp.io/zh-Hans/abp/latest/Modules/IdentityServer)默认使用 [IdentityServer4](https://identityserver4.readthedocs.io/ 阅读全文
posted @ 2023-07-07 11:32 林晓lx 阅读(751) 评论(1) 推荐(4) 编辑
摘要: [MAUI]用纯C#代码写两个漂亮的时钟 @[toc] 谷歌在2021年5月份推出的Android 12给我们带来了新的UI设计规范Material You,你是否已经体验到了Material You设计的魅力了呢? 在原生主屏幕启动器中,有一个时钟小部件。这个小部件可以选择表盘风格。 > ![在这里插入图片描述](https://img2 阅读全文
posted @ 2023-07-01 19:35 林晓lx 阅读(3522) 评论(7) 推荐(17) 编辑
摘要: [MAUI]弧形进度条与弧形滑块的交互实现 @[toc] 进度条(ProgressBar)用于展示任务的进度,告知用户当前状态和预期; 滑块(Slider)通过拖动滑块在一个固定区间内进行选择数值范围。 进度条和滑块都是进度值在UI界面的映射,其中滑块可以抽象成为带控制柄(Thumb)的进度条,是界面元素和进度值的双向绑定。 在某些场景下,我 阅读全文
posted @ 2023-06-18 15:03 林晓lx 阅读(2009) 评论(19) 推荐(18) 编辑
摘要: [MAUI]写一个跨平台富文本编辑器 @[toc] 富文本编辑器是一种所见即所得(what you see is what you get 简称 WYSIWYG)文本编辑器,用户在编辑器中输入内容和所做的样式修改,都会直接反映在编辑器中。 在Web端常见的有[Quill](https://github.com/quilljs/quill 阅读全文
posted @ 2023-06-11 23:15 林晓lx 阅读(3114) 评论(8) 推荐(25) 编辑
摘要: Volo.Abp升级小记(二)创建全新微服务模块 @[toc] 假设有一个按照[官方sample](https://docs.abp.io/zh-Hans/abp/latest/Samples/Microservice-Demo)搭建的微服务项目,并安装好了abp-cli。 需要创建一个名为GDMK.CAH.Common的模块,并在模块中创建标签管 阅读全文
posted @ 2023-06-09 14:45 林晓lx 阅读(343) 评论(1) 推荐(0) 编辑
摘要: [MAUI程序设计] 用Handler实现自定义跨平台控件 @[toc] 今天来谈一谈MAUI跨平台技术的核心概念——跨平台控件。 无论是MAUI,Xamarin.Forms还是其它的跨平台技术,他们是多个不同平台功能的抽象层,利用通用的方法实现所谓“一次开发,处处运行”。 跨平台框架需要考虑通用方法在各平台的兼容,但由于各原生平台(官方将原生称为本机)功能 阅读全文
posted @ 2023-06-04 18:37 林晓lx 阅读(2039) 评论(6) 推荐(22) 编辑
摘要: [MAUI]模仿Chrome下拉标签页的交互实现 今天来说说怎样在.NET MAUI 中制作一个灵动的类标签页控件,这类控件常用于页面中多个子页面的导航功能。比如在手机版的Chrome中,当用户在网页中下拉时将出现“新建标签页”,“刷新”,“关闭标签页”三个选项,通过不间断的横向手势滑动,可以在这三个选项之间切换。浏览网页常用选项融入到了原“下拉刷新”交互中,对比传统交互方式它更显便捷和流畅,根据Steve Krug之《Don't Make Me Think》的核心思想,用户无需思考点击次序,只需要使用基础动作就能完成交互。 阅读全文
posted @ 2023-05-28 18:00 林晓lx 阅读(1825) 评论(20) 推荐(35) 编辑
摘要: [MAUI]在.NET MAUI中复刻苹果Cover Flow Cover Flow是iTunes和Finder中的一个视图选项,允许用户使用水平滚动的图像查看他们的音乐库或文件。Cover Flow的交互设计非常优秀:通过指尖滑动从堆叠的专辑库中翻动和挑选一张专辑的交互方式不仅有趣,而且在有限的屏幕空间内,展现了更多的专辑封面。那个是乔布斯时代的苹果——使事情变得简单和有趣。最近我很怀念这个功能,但由于我手头上已经没有任何一台设备能访问这个功能了。于是在.NET MAUI中复刻了Cover Flow。 阅读全文
posted @ 2023-05-21 23:24 林晓lx 阅读(3178) 评论(27) 推荐(58) 编辑
摘要: 今天下午在排查一个EF问题时,遇到了个很隐蔽的坑,特此记录。 问题 使用ef执行Insert对象到某表时报错,此对象的Address为空: 不能将值 NULL 插入列 'Address',表 'dbo.xxx';列不允许有 Null 值。INSERT 失败。 检查数据库和迁移文件时发现Address 阅读全文
posted @ 2023-05-18 19:06 林晓lx 阅读(557) 评论(1) 推荐(8) 编辑