独立开发者系列(10)——fastadmin后台框架的认识

news2024/11/20 0:49:55

软件开发项目涉及到的东西非常多,作为独立开发者,普遍性的面对的是中小项目。而其中接单的情况下,以WEB方向的居多。其中主要有以下这么些类的:搭建官网cms  就是常见的资讯发布平台,发布一些企业新闻/活动宣传,纯粹是发到自己的网站上。随着移动端的到来,当前的cms都要兼容在H5手机端访问,并出现对应效果。这种订单要求很低,基本都是找一个cms套模板。而CMS背后代表一大批类似这种简单的需求。

  比如:之前提到的小型图书馆管理系统,公司里面简单的客户/员工管理系统,简单的广告投放记录系统,小程序里面的每日签到打卡活动,简单的宣发活动,在不考虑性能的前提下,基本都归属小型系统,这种项目的特点用一套万能的RBAC框架的admin管理后台,输出API,然后接入到第三方/前端/APP端显示,就可以快速完成。

      这里以fastadmin框架为示例演示基础项目的完成。去官网下载源码包,搭建好public网站。按照生成的后端php文件登录系统,就可以看到如下图:,安装太过简单,直接略过。主要是用该系统来实现我们自己需要完成的项目,各种小型的系统,类似书籍管理,内部任务管理,备忘录,小程序的后端开发..

  1. 搭建好之后,为了后续的开发方便,首先关闭后端验证码,因为是在本地开发,可能退出了登录,每次都需要验证码。跳到配置文件application/config.php 里面搜fastadmin 可以看到验证码部分的配置 login_captcha  默认是true 为了我们本地项目开发的快速,我们将其设置为false 这样就无需每次都要验证码。不过建议线上开启验证码,防止有人爆破后台。
  2. 打开调试模式 还是application/config.php 文件
     // 应用调试模式

'app_debug'              => Env::get('app.debug', true),

// 应用Trace

'app_trace'              => Env::get('app.trace', true),
将这俩个配置变成true  打开调试模式是开发时候的常规操作,也是所有项目接手或者修改必须打开的参数设置,这样代码写错,立刻可以看到完整的报错。没有报错的开发,会导致排查效率很慢。

  1. 安装在线一键CURD生成
      登录后台,找到插件管理。输入”在线命令”,可以找到该插件,点击安装。在线命令可以大幅度提升开发效率,在十年前开发的时候,还没有CURD一键生成的时候,我们开发后台是需要一个专门的程序员来开发,也就是一个人开发前端业务逻辑,一个人开发后台的管理。为什么会需要一个专门的人来开发后台,因为每次新建数据表,都需要复制页面,不断修改字段,而且还要根据字段做出各种效果,比如多选效果,开关效果,radio效果,当然还有各种按钮效果,包括更复杂的从其他表拉数据进行ajax请求,也要自己写后台请求的接口。这导致后台也是需要一个专门的程序员来进行开发的,后台人员根据开发业务的人员设计好的数据表,逐步开发后端功能。而后在慢慢的开发过程中,逐渐有人发现,其实后端的功能都差不多的,完全可以集成到模板里面,用一组命令进行生成。这就是一键CURD的核心主导思路。
  2. 一键CURD的使用
    可以直接使用命令行执行php think crud -t test 其中test是需要后台使用的数据表。但是我们一般不这么操作,安装了在线命令后,在debug = true的模式下,直接选择需要直接生成前端/后台control/model的,默认情况我们直接生成即可,生成后,再添加到菜单里面去

 
如果我们生成错误了,还是需要切换到命令行环境下执行,输入yes 才会删除(在线操作无法删除,需要切到命令行下删除)
php think crud --delete=1 --table=fg_test --controller=testxiong.php

  1. CURD的个性化操作明自定义控制器名:
     有时候我们设计了表名是A,但是我们并不希望控制器也是A,而且当我们设计的表数据结构非常复杂的时候,比如tb_gz_user_sign_count  这种数据表格式的时候,如果采用默认的生成方式会自动生成tb/gz/user/sign/count.php 但是很可能只有几张这样的数据表,我们为了方便管理 写成userSignCount.php控制器。默认是放在二级目录,这样非常方便的生成各种控制器。
  2. 怎么将生成的CURD放入菜单里面
    同样生成之后,点击一键菜单功能,会自动将生成的CURD变成一个个功能,放入到菜单里面。没有该功能,在传统的RBAC系统里面,我们需要手动将权限一个一个赋值给指定用户,除了超级管理员,配置其他账号的权限工作量非常大,特别是开发七八张数据表,光配置权限,可能就要一个上午。而现在这个一键生成之后,我们只要指派即可。
  3. 生成的前端页面进行修改
    一部分在admin/view对应的页面,主要是add/edit俩个页面,列表也index也有部分但是如果是改字段显示
    public/assets/js/backend找到控制器同名的js代码。可以更改列表,字段的样式显示。
  4. 字段的功能种类常用生成汇总 
    需要说明的是,fastadmin是根据数据库的字段自动映射生成CURD种类,也就是你可以通过数据表的设计,直接出现到后台的前端显示页面,这个功能很有用。因为调样式和加插件,配插件是后台开发程序员经常要花费大量时间操作的事情。
    最常用的:
     status  也就是状态码(一大部分的数据表都需要该字段,显示状态的)  设计字段的样板
    status    enum(‘0’,’1’,’2’)  状态值:0=禁用,1=正常,2=推荐
    实际效果图显示:

头像/封面/主图/背景/横幅  图上传(特点,一次只能上传一张,后面上传的会覆盖前面的上传)
image结尾的字段  varchar类型。在没有这种设计思路之前的普遍做法,找到一个图片上传的demo,将其对应代码复制到指定代码位置,然后替换成对应字段。后果如果是那种纯图的数据表,会发现密密麻麻都是图片重复代码,要不断去改。曾经不懂这个技巧,改其他框架30多个图片字段,写的异常复杂。而如果用框架的自动映射,设计表的时候就已经知道正常了。

活动图/滚动图/轮播图的上传(特点,一次上传一张,但是可以支持储存多张图)

Images结尾的字段,效果图

徒手写多图上传,无论用什么插件,都是比较费劲的,主要是要同时写好前后端,前端使用多图插件,拼接好图片之后,后端也要处理,而且在列表页面显示多图的缩略图的时候,要专门处理。但是该框架只要你对字段命名成images,自动完成了该过程。

富文本编辑器,普通的textarea 使用体验不是很好。需要将系统集成的富文本直接使用进去,这个也是一个挑战,在之前的系统里面,我们一般是找到一个富文本插件,然后集成到系统里面,再按照富文本的操作说明进行改动。
而在fastadmin里面 只要字段后缀命名为 content 自动关联富文本。如果没有装富文本插件,去下载一个免费插件即可。效果图

时间插件,主要是比赛日期/活动开始时间/结束时间之类的,之前的做法是找到时间插件,引入到后台JS代码里面,然后使用完成逻辑。而在fastadmin里面,直接将字段的结尾设置为time,会自动给你生成一个时间插件框框,需要date类型。这样与时间相关的插件问题,基本可以不考虑了。

性别/是否/对错  单之类的单选按钮,只需要再对应的字段后面增加个data 比如sexdata 然后设置enum类型 1,2 注释上下 性别:1=男,2=女 就可以出现如下效果(跟status类似,非常有用,再也不用每次对二元radio进行复制改代码字段操作)

  跨页面拉取数据表字段。一般比如商品的分类(商品页面需要拉取分类的字段比如是shopcate表)
shopcate_id 分类ID     int  将生成选择分类的下拉框,分类单选
这样就会读取分类的列表数据。绝大部分的电商场景会用到该功能,需要shopcate里面有id  name  pid 字段(类目表)
  如果没有该自动化功能,之前的操作是写个专门读取出数据的接口,给前端页面进行ajax调用,调用完成后,渲染进入到一个select 表里面,然后去勾选,复杂度非常高。而现在直接集成到系统里面。

小结:作为一个入门级的项目,fastadmin非常好用,可以应付绝大部分的小型场景,最少要掌握一套类似的admin后台框架,接单的时候,就能迅速反应出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1887534.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker部署ETCD 3.5.14(保姆级图文教程)

系列文章目录 Docker部署Nginx 1.21.5(保姆级图文教程) Docker部署MySQL 8.3.0(保姆级图文教程) Docker部署ETCD 3.5.14(保姆级图文教程) 文章目录 一、环境二、拉取镜像2.1 查找 Docker Hub 上的 ETCD 镜像…

【区块链+基础设施】国家健康医疗大数据科创平台 | FISCO BCOS应用案例

在医疗领域,疾病数据合法合规共享是亟待解决的难题。一方面,当一家医院对患者实施治疗后,若患者转到其 他医院就医,该医院就无法判断诊疗手段是否有效。另一方面,医疗数据属于个人敏感数据,一旦被泄露或被恶…

网络配线架的隐藏功能

网络布线是确保现代信息社会高效运转的关键技术之一。在这一领域,网络配线架扮演着至关重要 的角色。它不仅仅是一个简单的物理连接点,更拥有许多隐藏功能,这些功能极大地提升了网络的 效率、稳定性和可管理性。 1、集中管理 网络配线架提…

springboot图书馆座位预约系统-计算机毕业设计源码85670

目 录 摘要 1 绪论 1.1 选题背景与意义 1.2开发现状 1.3论文结构与章节安排 2 开发环境及相关技术介绍 2.1 MySQL数据库 2.2 Tomcat服务器 2.3 Java语言 2.4 SpringBoot框架介绍 3 图书馆座位预约系统系统分析 3.1 可行性分析 3.1.1 技术可行性分析 3.1.2 经济可…

MySQL 代理层:ProxySQL

文章目录 说明安装部署1.1 yum 安装1.2 启停管理1.3 查询版本1.4 Admin 管理接口 入门体验功能介绍3.1 多层次配置系统 读写分离将实例接入到代理服务定义主机组之间的复制关系配置路由规则事务读的配置延迟阈值和请求转发 ProxySQL 核心表mysql_usersmysql_serversmysql_repli…

达梦数据库修改日期时间格式和语言

1、问题 重装了达梦数据库后,通过达梦管理工具查询,表字段timestamp类型变成了中文 对于2023-11-01 01:55:33格式时间插入报错,非法的时间日期类型数据 2、查询配置 通过DM8系统管理员手册查到相关配置 通过命令进行查询显示,语…

《工业微生物》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问:《工业微生物》是不是核心期刊? 答:不是,是知网收录的第一批认定学术期刊。 问:《工业微生物》级别? 答:国家级。主管单位:中国轻工业联合会 主办单位&#xff…

多个tomcat同时使用 不设置CATALINA_HOME环境变量

通常一台服务器只使用一个tomcat,设置一个CATALINA_HOME的环境变量。但有些时候需要一台服务器启动多个tomcat,那就不能设置CATALINA_HOME了!因为会串~ 我们可以在对应tomcat的startup.bat启动脚本中,加入对应的CATALINA_HOME。 …

南京林业大学点云相关团队论文

【1】Chen Dong, Wan Lincheng, Hu Fan, Li Jing, Chen Yanming, Shen Yueqian*, Peethambaran Jiju, 2024. Semantic-aware room-level indoor modeling from point clouds, International Journal of Applied Earth Observation and Geoinformation, 2024, 127, 103685. 语义…

Python入门 2024/7/2

目录 格式化的精度控制 字符串格式化 对表达式进行格式化 小练习(股票计算小程序) 数据输入 布尔类型和比较运算符 if语句 小练习(成人判断) if-else语句 if-elif-else语句 练习:猜猜心里数字 嵌套语句 猜…

TransMIL:基于Transformer的多实例学习

MIL是弱监督分类问题的有力工具。然而,目前的MIL方法通常基于iid假设,忽略了不同实例之间的相关性。为了解决这个问题,作者提出了一个新的框架,称为相关性MIL,并提供了收敛性的证明。基于此框架,还设计了一…

imagesc函数 纵坐标翻转 colormap “set” “jet“

纵坐标默认上小下大 翻转: 在Matlab中,使用imagesc函数绘制的图像的纵坐标默认是从上到下递增的,即下面的值较大,上面的值较小。如果想要翻转纵坐标,使之从上到下递增,可以通过设置坐标轴的YDir属性为’n…

【Python机器学习】模型评估与改进——带交叉验证的网格搜索

虽然将数据划分为训练集、验证集、测试集的方法是可行的,也相对常用,但这种方法对数据的划分相当敏感,为了得到对泛化性能的更好估计,我们可以使用交叉验证来评估每种参数组合的性能,而不是仅将数据单次划分为训练集与…

Git入门 本地仓库 远端仓库 多分支

Git入门 Git入门本地git初始化git仓库初始化 创建远端仓库githubgitee 指定远端仓库推送至远端多分支将feature分支合并至dev分支 其他开发者 Git入门 本地git初始化 git仓库初始化 mkdir myrepo # 创建仓库文件夹 cd myrepo/ # 进入目录 git init # 初始化git仓库 (创建.g…

BMA456 运动传感器

型号简介 BMA456是博世(bosch-sensortec)的一款超小型、三轴、低重力高性能加速度传感器,配备数字接口。该传感器适用于低功耗且要求严格的消费电子应用。它可以检测手腕倾斜、按压/双击,并支持即插即用计步功能,尤其适…

让新质生产力照进现实,智慧数据基础设施需要软硬兼施

数智化时代,什么才是企业与组织最大的差异化竞争力? 答案无疑是:数据。在生成式AI技术日新月异之际,发展新质生产力已成为产业共识,越来越多的企业意识到:数据乃一切运作的基础,是企业拥抱AI浪…

【信息系统项目管理师】18年~23年案例概念型知识

文章目录 18上18下19上19下20上20下21上21下22年上22年下23年上 18上 请简述 ISO 9000 质量管理的原则 领导作用、 过程方法、 管理的系统方法、 与供方互利的关系、 基于事实的决策方法、 持续改进、 全员参与、 以顾客为关注焦点 概念 国家标准(GB/T 1 9000 2008)对质量的定…

Thinking--Promise解决动态挂载静态资源重复问题

Thinking系列,旨在利用10分钟的时间传达一种可落地的编程思想。 #mermaid-svg-MQ0o4hbZOvkQJra0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MQ0o4hbZOvkQJra0 .error-icon{fill:#552222;}#mermaid-s…

嵌入式Linux系统编程 — 6.3 kill、raise、alarm、pause函数向进程发送信号

目录 1 kill函数 1.1 kill函数介绍 1.2 示例程序 2 raise函数 2.1 raise函数介绍 2.2 示例程序 3 alarm函数 3.1 alarm函数介绍 3.2 示例程序 4 pause函数 4.1 pause函数介绍 4.2 示例程序 与 kill 命令相类似, Linux 系统提供了 kill()系统调用&#…

仿全民飞机大战射击网页游戏源码

仿全民飞机大战设计网页游戏源码,画质精美的飞机大战手机端游戏源码 微信扫一扫免费下载源码