当前位置: 首页 > 后端技术 > PHP

比较Laravel和SpringBoot两种框架创业之道(一:开发效率)

时间:2023-03-29 22:47:04 PHP

个人不喜欢正经比较两种框架。技术是相通的,但在特定领域的某个阶段一定有一个相对最适合的工具!这里的比较不是从技术角度,而是从公司的技术选型,尤其是刚起步的互联网创业公司。没办法,谁让互联网公司离不开软件呢!哈哈哈。首先是双方参赛选手的介绍:LaravelLaravel框架被誉为Web艺术家的框架。它充满了生产力,代表着最优雅、最流行的PHP框架。框架内),适合团队分工协同开发,开发速度快(社区生态和脚手架加持),部署方便(PHP部署就是这样,Git推拉拉搞定)功能模块更全面,架构更复杂(在PHP框架下,O(∩_∩)O哈哈~)全栈,前后端一个IDE,一个集成框架。所以SpringBoot的背后是Spring近乎无敌的生态和解决方案。先简单说一下特点:背靠老头Java,还有Spring,J2EE标准背书,生态很强大,开发速度很快(在Java系列中。。。),协议大于基于JVM配置,保证执行效率。掌握Spring的套路,对于本身不是J2EE的童鞋来说,学习成本有点高。在Cloud的加持下,微服务呼唤智能SpringDataJPA。其他的将在本文后面讨论。介绍完选手我们就开始分析看看用哪个吧。这里我们设置一个情境:假设小红是一个小老板(即将成为),他有一个自己认为价值20亿的idea,打算付诸实践。对软件架构和开发技术略有了解。没错,很不错的一款(如果很不错,框架随便用,无所谓),启动资金才30万。我不想假设这样悲惨的情况。现实中这样的情况很多,下面就以这个场景开始分析。小红想以最低的成本和最快的速度推出1.0版本,投放市场,收集反馈,不断迭代。这是一个系统工程,排除了其他因素,只考虑技术问题。可以概括为:成本(开发效率和人力成本)响应(迭代和部署效率)安全(稳定性和BUG解决速度)协作(团队协作和扩展性)1.开发效率开发过程,我们将其定义为需求和原型已经确定,简单的建模也已经完成,嗯,就是猿到岗位后打开电脑(Windows)有需求文档时不时的,等到1.0版本出来了,谁来跑快点!O(∩_∩)O哈哈~首先是Laravel框架,步骤如下:配置本地环境:包括PHP-CLI、Vagrant、VirtualBox、HomeSteadBox、Composer、nodejs(供Mix使用),Python,VirtualStudio,Node-gyp(Node-Sass使用),PHPStorm,Git,一切准备就绪后,composercreate-projectlaravel/laravelxxxdevelopment:definemigration,model,然后transformer和repository,然后写service和passport,然后写controller,view视图,再完善Event,Notification,push等。期间伴随着单元测试部署:Gitpush、GitClone、Pull、env为一体,熟悉Laravel开发流程的online,开发速度非常快。再来看看SpringBoot:业务不复杂,微服务就别想了。不要像明明只有一台机器,却非要开几十个端口,然后运行几十个小的SpringBoot服务。家庭桶串在一起。我无语安装单机应用。步骤如下:配置开发环境:安装IntelliJIDEA,安装JDK,安装其他要使用的Redis。它可以在几分钟内启动。开发:定义JAPEntity、Repository、Service、配置SpringSecurity(含Oauth2)、定义Validation、开启Controller、异常处理、视图层等,单元测试必不可少。部署:将Jar包打出来丢到服务器上执行。映射nginx,搞定。个人认为SpringBoot的开发效率要高于Laravel框架!为什么?因为如果你熟悉Spring的机制,也了解Security、JPA、Thymeleaf模板、RabbitMQ等功能模块的使用,那么SpringBoot的封装要比Laravel好,但是前提是你熟悉Spring。我不知道从哪里开始。Spring的一些组件非常复杂。例如,SpringSecurityLaravel框架借鉴了JavaSpring的很多思想,例如容器、依赖注入和切面。在这方面,SpringBoot显然是地道的,注解的6个不得不飞!Java语言非常严谨,开发过程中的体验也比较好。至少像我这样的猿猴,爪哇这样的老头子还是得照顾一下,不然分分钟就跑偏了。回到开发效率的问题上,如果对这两个框架都比较熟悉的话,SpringBoot开发速度更快,但是Laravel在某些方面要优于SpringBoot,具体如下:Laravel框架的ORM构建需要经过两个步骤、迁移和模型,改变迁移需要调整模型,不能和JPAEntity一样是数据库结构;Laravel框架需要手动实现一些注入绑定,通常是$app->bind,虽然这不会消耗太多时间,但是相对于Spring强大的注解还是慢了很多,而且主流的IDE都为Springbean提供了导航和查看功能,太棒了;如果要渲染网页,Laravel的动态脚本语言特性加上Bl??ade模板,基本秒杀SpringBoot;为了让层次结构更加清晰,Laravel需要手动实现Repository模式。反正我是受不了Model直接定义业务逻辑,也受不了放到Controller里,不仅丑,而且难扩展;在授权方面,Laravel内置和SpringSecurity非常强大,可以说是开箱即用,势均力敌;Laravel框架开发反馈调试比SpringBoot好。在这一点上,可以说所有的非编译型语言都非常爽!SpringBoot虽然也有DevTool,但是PHP受不了也不需要重启。Laravel框架的代码提示远不如SpringBoot,而且还需要第三方包Ide-Helper的支持,否则代码跟踪是不行的,不过就算用了第三方包,仍然无法看到容器的样子;像Laravel这样依赖面向对象的优雅框架,却遇到了PHP这种不完善的面向对象语言,以至于一个在Java系统中很容易实现的功能在PHP系统中却无能为力;Laravel在Route路由方面非常强大。比SpringBoot更直观、更灵活,所以在定义路由时,比SpringBoot更高效;异常处理非常方便,提供了统一的处理方式,不易区分;ApiJson数据定制,Laravel比SpringBoot强大,这是因为PHP的数组操作非常灵活。对于Java,需要定义工具类和实体类进行特殊处理;i18n国际化,Laravel比SpringBoot更方便;前端资源处理,就这个功能本身而言,Laravel的Mix配合Blade模板来爆破SpringBoot,不过话又说回来,只要不是全栈,这也算不上什么优势。想象一下,如果准备好前端页面,拿到后端模板,那么Thymeleaf就会把Blade打爆,因为Thymeleaf可以保留预览数据,渲染实际数据,而Blade是做不到的。总结:在技能足够的情况下,个人感觉SpringBoot的开发效率略高于Laravel。个人对情况的把握不尽相同,请勿喷,可以参考文章中的几个维度,自己思考。最后,我想顺便提一下:Laravel不发音为“Lava”Laravel不发音为“Lava”Laravel不发音为“Lava”。今天先说到这里,明天再写人工成本方面的考虑。晚安各位!谢谢