『贴Builder』
最新文章
热门话题
用户问答
lao人言
「搜索」
PasteSpider
一款更加适合开发人员的微服务(容器)发布管理工具

节省资源

极小的运行资源消耗,还支持一拖多运行,运行内存甚至低至100MB!

安全运行

和业务服务没有层级上的关联,哪怕PasteSpider停止运行也不会影响你的业务服务运行

简单易上手

一键安装,图形操作点点点即可完成操作,附属服务的支持原汁原味,简单易上手

环境隔离

支持拆分多环境运行,工厂,测试两不误,还可以根据环境配置适应不一样的配置信息

适用功能一应俱全

从项目角度进行服务容器管理,支持自动升级,扩容,缩减,状态报表,键值配置,自动路由等

支持Git/Svn代码管理

通过配置支持服务环境级别的自动提交构建,一键提交代码后即可自动发布服务和路由等

【PasteForm】最佳CRUD的实现案例项目PasteTemplate解析,包含源码(一)
尘埃 2024-09-22 454 35 0
PasteForm的最佳CRUD实践,目的是规范前端后,让页面的内容由后端控制,实现项目新增表和改动表的时候,不需要前端修改代码即可实现管理端对新功能的支持!

在之前的文章中说明了我心目中的CRUD的思路,后面也付出了实际,写了一个案例项目PasteTemplate,后面也在实际项目中(贴Builder(PasteSpider)和贴代码(PasteSoft))
在实际项目中对案例项目进行了新的改动,主要是实现一些实际项目中的需求,比较不能用于实际项目的框架是没有意义的!

前置条件

案例项目基于ABPvNext的框架的简略版本,只保持了XXX.Domain,XXX.Application.Contracts,XXX.EntityFrameworkCore,XXX.Application,XXX.HttpApi.Host然后我在这个的基础上加了一个子项目XXX.Handler,为了便于开发可以下载PasteBuilder作为这个项目的右键代码生成器,这个生成器是一键生成的,不必这里复制代码,哪里复制代码!

XXX.Handler

XXX.Handler:作为XXX.Application.Contracts之后,在XXX.Application之前,主要作用是用于聚合业务需求
比如用户模块,包含了角色,权限,账号,找回密码,新建账号等,全部聚合到UserHandler中,而这个UserHandler可以被XXX.Application和XXX.HttpApi.Host中调用,这里XXX.Application比较好理解,WebApi主要的代码就放这里,而XXX.HttpApi.Host中就有很多代码可以实现了
1.比如引入Channel可以把代码写入到HostedService中,这样就实现了本地的消息队列和队列处理,
2.如果有引入RabbitMQ则还可以作为消费者,
3.再者在系统初始化的时候,可以作为内置菜单和默认账号的写入
4.还可以为一些特殊的接口提供服务,比如有些三方接口等

PasteBuilder

这个是贴代码专门为PasteTemplate模板项目创建的右键代码生成器,就是VS2022的插件,安装后,后续在项目中添加新的表,只要在XXX.Domain中对应的模块添加表的Model,然后右键生成代码,就会在对应的EF,Application等地方写入代码,然后右键重新生成解决方案,理论上是直接生成成功的,然后自己去执行add-Migration生成对应的迁移代码!

项目案例要点

本次项目改动比较大,之前也是有发布PasteTemplate做为项目模板,啥叫项目模板?就是你自己写一个项目,把一些基本的轮子等写好,然后打包成项目模板,后续要开发新的项目,选择这个项目模板即可生成新的项目,好处就是新的项目不要再次搭建基础轮子了,然后是项目的命名,文件的命名等都是新的,我看很多人是找旧的项目复制出来,然后各种重命名,各种删除不要的代码!

登陆页面

新的登陆页面将采用统一的,说白点后续的项目,可以说前端(管理端)几乎不要修改代码,只要改动项目的后端代码即可,所以登陆页面作为很重要的一部分!
图片alt
登陆页面没啥改动哈,主要是样式,然后引用动效!接口地址主要在/api/app/User/xxx中

管理端首页

作为管理端的首页,相信几乎的项目是一样的,那就是菜单页面和工作台,PasteTemplate的管理端首页如下
图片alt
左侧菜单采用动态的模式,菜单由权限读取,系统在首次启动的时候会把默认的菜单写入到数据库,如果当前账号有root-root的权限,则会返回所有的菜单,也就是root-root表示超级权限的意思,拥有系统的所有权限!

PasteForm

作为本次的主角,也就是CRUD的实现,PasteForm表示的是3个页面组成的模块

pasteform/index.html

表单页面的主页面,数据显示列表的页面,按照下图为例
图片alt
主要包含几个区域
1.上方的搜索区域,这个搜索区域一般由InputQueryXXXModel控制,动态的,也就是由后端的InputQueryXXXModel或者是默认的InputSearchBase的对象控制,包含的功能有

a.外表输入,比如你要输入某一个表的ID作为查询条件,如上图的搜索某一个权限作为父级去搜索他的子集,操作方式点击后会弹出选择页面,选择后会把id赋值个这个搜索输入框,显示的是名称字段,传值是ID字段,这两个字段可以配置的,使用的属性为outer
b.选择框,可以配置多个选择项中选择其中一个,比如按照状态查询,则一般有全部状态,可用状态,禁用状态!这个要看对应字段的属性配置决定的,使用的属性为select
c.多选框,对应选择框,其实就是选择框的多选模式,接收的方式要看字段的类型,比如你可以回传123,124,也可以回传[123,124]等,这个也是基于配置的,使用的属性为selects
d.参数来源,有时候当前页面是其他页面传递过来的,比如给某一个角色绑定权限,那么这个时候当前页面附带的参数一般为gradeid,表示页面显示的内容是基于参数gradeid进行查询权限列表的,这个时候,如果当前页面有这个参数,则这个对象会被隐藏,使用的属性为query
e.参数传递,在上面的例子中,如果这个时候你点击新增,需要基于这个参数做为下一个页面的输入值,则需要把这个页面的某一个或者多个参数传递给下一个页面,这个时候需要使用的属性为linkquery
f.默认值,只需要在查询模型中赋值,即可作为默认值,如果是单选或者多选框的,需要添加一个属性selected=true,也就是修改可选对象的属性!
g.一般输入,除了支持上方的输入,当前也是支持一些基础的输入的,比如number,text等,甚至是required等,这个按照正常的写法即可!

至于搜索区域的内容是怎么来得?
在页面首次打开的时候,会从对应的API中读取这个表的2个信息,一个是下方表格的模型的属性,一个就是对应的搜索区域的模型的值!
比如:

        /// <summary>
        /// 读取ListDto的数据模型
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        [TypeFilter(typeof(RoleAttribute), Arguments = new object[] { "root", "root" })]
        public PasteBuilderHelper.VoloModelInfo ReadListModel()
        {
            var _model = PasteBuilderHelper.ReadModelProperty<RoleInfoListDto>(new RoleInfoListDto());
            var _query_model = PasteBuilderHelper.ReadModelProperty(new InputQueryRoleInfo());
            if (_query_model != null)
            {
                _model.QueryProperties = _query_model.Properties;
            }
            return _model;
        }

上面的代码中其实就是读取了模型RoleInfoListDto的属性和搜索区域的InputQueryRoleInfo的属性!

下一章将介绍数据表格中的内容

评论列表
尘埃
35 454 0
快捷注册
最新动态
  • 154.****.93 正在查看 PasteSpider中关于Nginx的配置,安装PasteSpider之后查阅 !
  • 53.****.232 正在查看 PasteForm中,表格的不一样的样式的设定? !
  • 210.****.223 正在查看 PasteSpider中如何同步文件到服务器包含PasteSpiderFile的下载 !
  • 219.****.36 正在查看 PasteBuilder的进阶用法 !
  • 150.****.200 正在查看 PasteForm中如何处理批量操作? !
  • 4.****.33 正在查看 PasteSpider的测试环境之在Docker中安装centos7并设定SSH的密码 !
  • 63.****.85 正在查看 在Centos7中安装Nginx !
  • 144.****.129 正在查看 在centos7中安装docker !
  • 205.****.136 正在查看 Postgresql的安装 !
  • 20.****.212 正在查看 使用PasteSpider实现CI/CD持续部署,类似Jenkins的功能,让你的2G服务器也可以飞起 !
  • 156.****.112 正在查看 PasteBuilder的进阶用法 !
欢迎加入QQ讨论群 296245685 更新记录 [PasteSpider]介绍 @2022-2023 PasteCode.cn 版权所有 ICP证 闽ICP备2021013869号-2