再对比Filament和DcatAdmin [终结篇]
之前发了一个我使用Filament完成的项目。
我的新作品,基于filament的NXCRM2.0来了。 | Laravel China 社区 (learnku.com)
并且承诺了会再发一篇Filament的使用心得和DcatAdmin的对比。
今天把这事结束掉。
Filament和DcatAdmin对比
先说答案,没什么可比性。这俩个是不同的时期的产物。
DcatAdmin 诞生的时候,Filament连影子都没有,甚至连 livewire,tailwindcss 也没有,什么都没有。毛都没有。
DcatAdmin使用的技术栈是原生的 css 和当时只能选择的JQ。所以DcatAdmin做到了它诞生那个时期能做到的我认为最完美的状态了。好看,速度快,开发快。我对它有很深的感情,我感激DcatAdmin和它的作者 Jiangqh 。DcatAdmin是我刚刚学会 php 的时候,刚刚接触 laravel 时候的启蒙,是我做第一个项目用到的框架。如果不是因为DcatAdmin的简单和好上手。说不定我早就半途而废了。
为了表达我的感激,在作者还愿意接受捐款的时候,断断续续的捐了一点零钱。甚至DcatAdmin的官网,目前你看到的DcatAdmin的官网,也是我设计的。
我说这些是因为,我想告诉看这篇文章的朋友,如果论感情,除了DcatAdmin的作者,我对DcatAdmin的感情多少也能排个前几了。
但,技术不应该忠诚。
作为开发人员,永远关注和学习更出色更先进的技术才应该是我们的技术理想和追求。
无论是DcatAdmin,还是Filament,我认为都不算是在技术方面有突破的产物。他们只是创造了方便后台管理的框架。方便大家快速搭建后台管理系统。但是是不是在技术方面有创造性?我认为,没有。
那什么技术是创造性的?在 laravel 的生态里,我认为是 tailwindcss,livewire,和Inertia。
tailwindcss颠覆了写传统写 css 的方式,写 css 的速度提高了数倍不止。我曾在b站和其他站点努力普及和推广过 tailwindcss 。也使用tailwindcss做了无数的项目。我很难回到传统写 css 的方式。
livewire可以让后端人员不用写 api 就可以无感和前端交互。体验达到前后端分离的效果。我认为也属于开创性。用惯了livewire,在不使用前后端分离的场景下,也很难再回到以往 ajax 发送请求的方式。
Inertia可以让人在不写 api 的前提下,在 laravel 项目内,很容易的使用React、Vue 和 Svelte 。
在tailwindcss,livewire,alpinejs(不介绍了)诞生以后,Filament自然而然就来了。就算Filament不出来,其他类似的框架也会出来,比如 laravel 作者维护的 nova 就是。使用的是Inertia。
Filament比DcatAdmin晚出来四五年。DcatAdmin是基于laravel-admin的。我看了下laravel-admin的提交记录,首次提交居然是 9 年前了。
时间相差十年,在这十年里,技术在发展,各类后台框架也在迭代,封装思想也在变化和进步。Filament使用的是这十年里的技术成果。
所以回到正题,Filament和DcatAdmin没有任何对比的必要,也没有可比性。
DcatAdmin在它的时代里,是一个非常棒的产品。
但在现在,2024 年,DcatAdmin已经没办法在和Filament比了。如果你认为它俩差不多,那是因为你没有使用Filament开发过一个完整的项目。只是浅尝辄止的话是无法体会到的。就像这几年不断的有人在质疑 tailwindcss 一样。只是因为没用过。
一句话概括:Filament比DcatAdmin好很多。
非要说出一个DcatAdmin现在还比Filament好的优点,就是速度快。运行速度快。
DcatAdmin的运行速度比Filament快很多。
这是目前DcatAdmin相比于Filament唯一的优点了。
我之前说DcatAdmin的社区活跃度要高于Filament,遇到问题好解决。但是在我写这篇文章的时候,我认为这点优势也没有了。
DcatAdmin的停更(其实我也觉得没必要更新了),导致用户减少,再加上这几年国内的经济环境,连项目都很少了。所以DcatAdmin本身的讨论也少了。
Filament有 github 的社区。有discord,我目前遇到的问题,在这些社区提问,基本 24 小时内都有人回答你。再加上我自己的建立的Filament微信群已经有120 多位开发者。每天的讨论气氛还好。遇到问题一般有都有人会和你交流。
所以社区这个劣势基本也扯平了。
Filament的优点:开发速度快
1,开发速度快。目前DcatAdmin有的,Filament都有,而且甚至做的更好。得益于 livewire 和 tailwindcss,即使你不了解Filament,你也可以直接使用livewire 和 tailwindcss快速写出自己想要的功能。但如果深入了解,其实发现很多交互其实Filament本身就可以实现。利用强大的actions,你可以完成任何交互。
2,插件丰富。Filament官网收录了 282 个插件。加上 github 的插件,可能已经上千了。你有很大的概率可以找到自己想要的插件,如果没有,Filament本身也有插件功能,对照文档自己实现一个插件也很简单。
3,功能强大。Filament自带了很多强大的功能,比如功能完善的多租户。多面板功能。集群功能。体验更好更简单的导入导出功能。几乎所有自带的方法都支持回调,信息的增删改查都有颗粒度非常细的生命周期可以控制。
Filament的缺点:运行慢
1,Filament的运行比DcatAdmin要慢一些。在本地开发的时候,40 万条测试数据,速度还可以。部署在网络上,2h2g,2M带宽的服务器。没使用任何缓存,没使用Laravel Octane。演示见:crm.demo.nxime.com/ 速度可以自己看一下。我自己是觉得比DcatAdmin要慢一些。但是这个速度我自己是能接受的。
2,支持 livewire有好有坏,好处是开发速度飞快。但也有一个人为习惯带来的坏处。livewire一般是配合alpinejs使用的。本身它俩也是同一个作者。
但是由于livewire的前后端交互太丝滑,导致大多数人开发的时候,完全不用alpinejs,我自己也不用。livewire完全可以脱离alpinejs使用。前后端交互两句代码就搞定了。但是使用alpinejs就需要写额外的代码,写额外的数据交互。
造成的后果就是,如果你不使用alpinejs,就意味着,你动不动点个按钮,加载个数据,时时刻刻都在和后端交互。每一个操作都在和后端交互。我想这也是速度变慢的一个原因。当然Filament本身的代码非常规范。只是用的人的习惯导致出了问题。
就这些。这是我的个人感受。这也是最后一次对比DcatAdmin和Filament。
最终观点
我的这个文章只是给犹豫不决在做选择的人做个参考。最终还是你喜欢用哪个就用哪个。哪个顺手就用哪个。哪个熟悉就用哪个。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: