springboot和laravel相比,有哪些优缺点?

作者:北夜
链接:https://www.zhihu.com/question/388670842/answer/1164190942
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

两者生态丰富,撸起来顺手,乍一看都很难比较。

实际上要视项目规模而定。

在高可用性上,Laravel且不说远比不过SpringBoot,连一票Php框架都比不过。速度慢,是真的慢。这是Php脚本语言的基因和Laravel IOC底层实现决定的。前期开发一时爽,后期优化火葬场,Laravel搞优化,难度远大于Spring系。此外,如果要进一步拆分系统微服务化,Laravel没有什么能拿出手的了,只能干瞪眼。Spring反手甩出SpringCloud全家桶笑而不语。如果为了性能进一步去深入Swoole,我觉得如果只是想学习而不是做项目,还不如去学SpringBoot。实际上,Laravel很多概念和SpringBoot完全一致。上手也很容易。

在开发体验上,各有千秋。

先看生态:

你如果想快速撸一一个项目原型,两者都有强大的生态支撑。SpringBoot是开发框架,Laravel是全栈框架,两者是有区别的。SpringBoot如果想覆盖Laravel的功能,是需要进一步集成其他组件的(用户认证、数据迁移、文件管理)。Laravel已经集成的差不多了。在此基础上Laravel的扩展,好比积木一样可以将组件完整的嵌入到系统内。这一点SpringBoot也能做到,但感觉需要写的配置稍微多一些,不过强也强在可配置能力非常强。(写SpringSecurity用户认证和Laravel Passport的真实感受。)Laravel的生态很大程度体现在繁多的扩展上,而SpringBoot第三方轮子简直是飞轮海,两者各有胜负。

调试:

成也动态、败也动态。上了Laravel,开开PhpStorm,再也找不到Idea那种行云流水的畅快感了。Laravel魔法多,争议也多。大量的魔术方法、门脸模式,即便上了开发扩展能够提示的也有限。像Java那种完整的开发、调试、测试体验找不到了,莫名失落哈。当然反过来,Java系列写起来确实啰嗦,如果个人手撸,需要依靠大量的代码生成工具解决。如果你要写一个长期项目、大中型项目,还是上Java吧。Laravel调试起来尽管比传统的Php好很多,但根Java这种静态语言比,其严谨性稳定性不是一个数量级的。

小细节:

Laravel Api Resouce做的不错,数据格式转换比较好写,比SpringBoot的Jackson方便一些,但优势并不突出。

总结:

我是从Laravel入门的web开发,随后接触到了前后端分离的概念,并接触到了SpringBoot,小白之言,不过确实体验过两者开发体验的不同。在开发RestfulApi上,Laravel确实和SpringBoot相比还是有一定差距的,其快速开发的优势和SpringBoot相比并不突出,反倒是性能问题饱受诟病。Laravel开发的全栈优势并没有得到完全释放。(个人认为Laravel MVC的Blade引擎要比Thymeleaf强很多的。)

编辑于 2020-04-19