Dcat Admin
前言
首先得感谢一下社区的大佬@z-song,这个项目是基于laravel-admin二次开发的,laravel-admin也是我搬砖至今用过的对后端程序员最友好的后台构建工具,没有之一,包括Laravel nova
也没有这个用的爽快。初次接触laravel-admin我就被大佬的设计惊艳到了,就有一种原来后台原来还能这样写的感觉。大家可以把这个项目视为laravel-admin的船新版本哈哈哈。
这个项目从commit的第一个版本开始,到现在已经接近一年时间,这一年不敢说是潜心开发,但也是耗费了许多心思和精力在这个项目里面,上头的时候甚至写到半夜两三点。因为想呈现出一个高品质的产品给大家,所以就一直未敢发布,一直在默默的反复打磨抠细节到了现在,希望能写出真正有用的东西。
![](https://cdn.learnku.com/uploads/images/202003/30/38389/POEkfnSRk7.png!large)
现在也终于到了可以跟大家见面的时刻了,正式版即将在近期发布,希望这个项目可以帮到大家!欢迎大家安装体验,如果对这个项目有兴趣也欢迎参与进来!
如有问题大家可以在GITHUB issue区或QQ群中反馈,我会及时解决。
QQ交流群:704661955
简介
Dcat Admin
是一个基于laravel-admin二次开发而成的后台构建工具,只需极少的代码即可构建出一个功能完善且颜值极高的后台系统。。
DEMO在线预览| 文档(持续完善中…) | Gitee | Github(如果喜欢这个项目请点个star吧,感谢支持)
环境要求
php
7.1+
laravel
5.5 ~ 7.*
进度
目前这个项目的第一个版本的功能已全部开发完毕(包含laravel-admin最新版本
的几乎所有功能和其他新增功能),文档目前还在补充当中,等文档差不多了就会发布正式版,预计是4月初。
正式版本发布之后大家可以放心使用,现在已基本没有问题,如果有问题我也会及时解决。另外也不用担心没人维护的问题,这个项目我会持续维护和更新下去,当然如果支持的人多我会更新得更勤快哈哈哈。
接下来的工作重点是编写单元测试用例和完善文档,这个项目将会有完善的单元测试用例和完善的文档,一个高品质的项目稳定性是必须的!
这里不得不吹一下
laravel dusk
,用起来真的太爽了,可以模拟很多真人操作浏览器的动作。跑测试用例时时还可以弹出浏览器,可以直观的看到单测逻辑运行的效果,结合组件功能,让编写模拟浏览器操作的相关逻辑变得更简单,还增加了很多趣味性。
设计方向与适合人群
laravel-admin并没有采用现在流行的前后端分离的模式开发,依然是用后端渲染页面,前端框架用的是bootstrap3
+jQuery2
,这个特点既是laravel-admin的强大优势,同时也是它的弱点。
优势
采用bootstrap
+jQuery
实现后台构建工具的优势就是,它对后端程序员极度友好,后端程序员用这个技术栈可以很高效率地搭建出一个完善的后台系统,而且上手简单,学习成本很低。基本上就是只要你会jQuery
和Laravel
,那么从开发到维护和扩展都是非常轻松的事。
弱点
而所谓弱点,就是从技术的角度来看,bootstrap
+ jQuery
的组合已经是比较落伍的技术栈,甚至可能很多精通大前端的同学们可能也已经看不上这个技术栈了,现在流行的前端框架是vue
和react
。
设计方向
Dcat Admin
的优势与缺点与laravel-admin是一脉相承的,我们并不太追求前端技术的新颖,而更注重易用性和高效率。白猫黑猫只要能抓到老鼠就是好猫,你看我香不香就行了,不是吗?所以这个项目的设计方向已经很明确:
注重后端开发体验和高效率,注重界面的美观,注重代码的简洁和优雅。
适合人群
分析了这个项目的优缺点之后,这个项目的适合人群也是显而易见了。
- 1.适合个人站长,可满足轻松、快速建站的需求
- 2.适合PHP初学者,上手简单学习成本低
- 3.适合有快速建站需求,主要以满足功能为主,不注重技术选型的项目。例如外包项目、公司内部办公系统等等
如果你是抱着学习前端技术或追求的是前端技术的新颖的心态,那么这个项目并不适合你,你可能更适合去用laravel nova
。我这里的意思也并不是说laravel nova
不好用,只是相对于laravel admin
而言,它的学习成本会更高,易用程度也有所不及,对开发人员的技术水平有更高的要求,如果说得不对欢迎指正,大家轻喷哈。
与Laravel-admin的不同
下面列一些本项目与laravel-admin
的主要不同点
1.界面
本项目前端页面采用AdminLTE3(bootstrap4 + jQuery3)构建,如大家所见,界面更加美观,bootstrap4
的开发体验也会更好一些,比bootstrap3
强不少。
UI设计参考了
vuexy
,配色是我本人自己调的。
2.松散耦合的页面构建与数据操作设计
Dcat Admin
构建页面不再直接依赖于Model
,页面的构建与数据的读写是分开的。换句话说,构建页面是不需要关心数据的读写的,我把对数据的读写操作抽象成清晰易懂的接口,只需实现这些简单、清晰的接口就能轻松切换数据源。
当然为了方便我也保留了直接使用Model
的功能,毕竟大多数时候直接使用Model
也能满足我们的需求。
3.无刷新页面JS按需加载
laravel-admin
有一个让人很不爽缺点就是不支持前端静态资源的按需加载,所有静态资源都必须一次性加载完毕,这就意味着你的系统不能随意引入JS组件,否则会影响素有页面的加载速度!
而在这个项目中我仍然采用PJAX
构建无刷新页面,但是增加了支持按需加载前端文件的功能,每个页面只需加载这个页面需要用的的JS文件
和CSS文件
。
这个功能对于开发体验来说没有任何影响,依然是按以前的方法引入script
代码,只不过加载前端文件的代码可以放在控制器中执行。
示例:
假设你想定义一个卡片组件,这个组件需要引入一些前端静态资源文件
use Illuminate\Contracts\Support\Renderable;
use Admin;
class Card implements Renderable
{
public static $js = [
'xxx/js/card.min.js',
];
public static $css = [
'xxx/css/card.min.css',
];
public function script()
{
return <<<JS
console.log('所有JS脚本都加载完了');
$('xxx').card();
JS
}
public function render()
{
// 在这里可以引入你的js或css文件
Admin::js(static::$js);
Admin::css(static::$css);
// 需要在页面执行的JS代码
// 通过 Admin::script 设置的JS代码会自动在所有JS脚本都加载完毕后执行
Admin::script($this->script());
return view('...')->render();
}
}
在控制器中使用
use Dcat\Admin\Layout\Content;
use Card;
class HomeController
{
public function index(Content $content)
{