Laravel和SpringBoot两个框架⽐较创业篇(⼀:开发效率)我个⼈是⽐较不喜欢去正⼉⼋经的⽐较两个框架的,这样没有意义,不过欲善其事先利其器!
技术是相通的,但是在某个特定的领域的某个阶段肯定有相对最适合的⼀个⼯具!
这⾥⽐较不是从技术⾓度⽐较,⽽是从公司技术选型考虑的,特别是初创的互联⽹创业公司。没办法,谁让互联⽹公司离不开软件呢!哈哈哈。
⾸先是双⽅选⼿出场介绍:
Laravel
Laravel框架号称是Web艺术家的框架,富有⽣产⼒,代表了最优雅最流⾏的PHP框架,经过⼀段时间的使⽤,也上了⼀个项⽬,感觉特点如下:
⽐较规范(PHP的框架中),适合团队分⼯协作
开发速度快(社区⽣态和脚⼿架加持)
部署⽅便(PHP的部署就那样吧,Git⼀套推拉下来就搞定了)
功能模块⽐较全⾯
架构较复杂(在PHP框架中,O(∩_∩)O哈哈~)
全栈,前后端⼀个IDE搞定
其他⽂中再说
Spring Boot
Spring Boot准确来说并不是⼀个完整的框架,⽽是为了使 Spring 全家桶更⽅便使⽤、更亲民⽽产⽣的⼀个整合框架。所以Spring Boot 的背后是 Spring 近乎⽆敌的⽣态和解决⽅案。
先简单说⼀下特点吧:
背靠 Java 这个⽼家伙,还有 Spring 这个J2EE 的标准背书,⽣态⾮常强⼤
开发速度快(在Java系列中。。。),约定⼤于配置
基于JVM,执⾏效率有保障
springboot框架是干嘛的需要掌握Spring的那⼀套,对于本⾝不是 J2EE 的童鞋学习成本有点⾼
有Cloud 加持,微服务在召唤
智能到令⼈发指的Spring Data JPA
其他稍后⽂中再说
好啦,介绍完选⼿,就开始来分析⼀下该⽤哪个啦,这⾥我们设定⼀个情境:
假设⼩红是⼀位有⼀个⾃认为价值 20亿的Idea,并且打算付诸实践的⼩BOSS(即将成为),稍懂软件架构和开发技术,没
错,是很菜的那种(如果很厉害那随便怎么⽤框架了,没所谓),且启动资⾦只有 30万。
我也不想假设的这么惨的,现实中这种情况很多,那我们就以这种情景展开分析。⼩红要以最低成本、最快速度推出 1.0 版本,投放市场,收集反馈,持续迭代。这是⼀个系统⼯程,讲其他因素剔除,只考虑技术问题,可以总结成以下⼏点:
成本(开发效率和⼈⼯成本)
响应(迭代和部署效率)
安全(稳定性和 BUG解决速度)
协作(团队协作和扩展性)
1.开发效率
开发这个过程,我们将它定义为需求和原型都已经确定,并且已经简单建模完毕,嗯,就是猿们到岗后拿着需求⽂档打开电脑(Windows)的时候开始,到 1.0 版本发布这段时间,是谁跑得快!O(∩_∩)O哈哈~
⾸先是 Laravel 框架,步骤是这样的:
配置本地环境:包括PHP-CLI、Vagrant 、VirtualBox、HomeStead Box、Composer、nodejs(Mix要⽤到)、Python、Visual Studio、Node-gyp(Node-Sass要⽤到)、PHPStorm、Git,⼀切就绪后composer create-project laravel/laravel xxx
开发:定义migration、model,然后transformer和repository,再写service和passport啥的,再写controller,view视图,然后完善Event、Notification、推送啥的,期间伴随着单元测试
部署:Git push、Git Clone 、Pull,env整⼀个,上线
对 Laravel 的开发流程熟悉的⼈呢,开发速度是很快的。
我们再来看看Spring Boot:
业务不复杂就不要折腾微服务啦,不要像某⼈⼀样明明只有⼀台机器,硬是要开⼏⼗个端⼝,然后跑⼏⼗个Spring Boot的⼩服
务,还⽤Cloud全家桶串起来了。我竟⽆⾔以对
单体应⽤撸起来,步骤如下:
配置开发环境:IntelliJ IDEA下⼀个、JDK装⼀个、其他要⽤到的Redis啥的装上,分分钟就搞定可以开撸了。
开发:定义JAP Entity,Repository、Service,配置Spring Security(包括Oauth2),定义Validation,开撸Controller、异常处理,视图层啥的,单元测试也少不了
部署:打出Jar包,扔到服务器上执⾏吧,nginx映射⼀下,搞定
我个⼈觉得Spring Boot的开发效率要⽐ Laravel 框架⾼些!
为什么呢? 因为如果对 Spring 的机制熟悉,也了解 Security、JPA、Thymeleaf模板、RabbitMQ 等等功能模块的使⽤,Spring Boot 的封装是⽐ Laravel 要好的,但前提是对Spring 那⼀套熟悉,不然从何⼊⼿都弄不清楚。
Spring 有些组件是⾮常复杂的,例如 Spring Security
Laravel 框架借鉴了很多 Java Spring 的思想,⽐如容器,依赖注⼊、切⾯,这⽅⾯明显 Spring Boot 是正宗,注解啥的6得飞起!
Java 语⾔⾮常严谨,在开发过程中的体验⽐较好,⾄少像我这样天马⾏空的猿,还⾮得要 Java 这个⽼头来管着,不然分分钟要跑偏。
回到开发效率这个问题上,如果对两个框架都⽐较熟悉的情况下,Spring Boot 是开发⽐较快的,但 Laravel在某些⽅⾯是完胜Spring Boot,如下:
Laravel 框架的 ORM 构建需要经历两个步骤,migration 和 model ,⽽且改动 migration 需要调整 model,⽆法向 JPA ⼀样Entity 即数据库结构;
Laravel 框架需要⼿动实现⼀些注⼊绑定,通常是$app->bind,尽管这不消耗多少时间,但是⽐起Spring强⼤的注解还是慢不少,⽽且主流IDE对 Spring 的 Bean 提供了导航查看功能,⽜逼哄哄啊;
如果要做⽹页渲染,Laravel的动态脚本语⾔特性加上Blade模板基本是秒杀Spring Boot 的;
要让层次更分明⼀些的话,Laravel 需要⼿动实现Repository 模式,反正我是受不了Model 直接定义业务逻辑的,放在Controller⾥也受不了,不但难看,还不好扩展;
在授权这⽅⾯,Laravel ⾃带的和Spring Security 都很强⼤,可以说是开箱即⽤,打平;
Laravel框架开发反馈调试⽅⾯是完胜Spring Boot的,这⽅⾯可以说所有⾮编译型的语⾔都很爽!尽管Spring Boot 也有DevTool,但是架不住 PHP 根本就不需要重新启动呀。
Laravel框架的代码提⽰远远⽐不上Spring Boot,⽽且还需要第三⽅包Ide-Helper的加持,不然代码追踪都不⾏,可是就算⽤了第三⽅包还是看不了容器内长啥样啊;
像 Laravel 这样靠⾯向对象体现优雅的框架,却遇到了PHP 这门⾯向对象不太完全的语⾔,以致于在 Java 体系内很容易实现的⼀个功能,到了PHP体系却⽆能为⼒;
Route 路由这⽅⾯ Laravel ⾮常强⼤,⽽且直观,⽐Spring Boot 灵活,所以定义路由的时候效率完爆Spring Boot;
异常处理两者都⾮常⽅便,提供了统⼀处理的⽅式,难分伯仲;
Api Json数据定制这⽅⾯,Laravel ⽐ Spring Boot 要强⼤,这是因为PHP的数组操作⾮常灵活,对于 Java 来说需要定义⼯具类和实体类来专门处理;
i18n国际化,Laravel ⽐Spring Boot ⽅便;
前端资源处理,就这个功能本⾝来说,Laravel的Mix配合Blade模板完爆Spring Boot,但是话说回来,只要不是全栈,这不算什么优势。设想⼀下如果是前端做好页⾯,拿到后端套模板,那Thymeleaf 完爆 Blade,因为Thymeleaf 可以保留预览数据,渲染实际数据,Blade 做不到这⼀点。
总结:在技能掌握充⾜的情况下,个⼈感觉 Spring Boot 开发效率要略⾼于Laravel。个⼈掌握情况不⼀样,请勿喷,可以参考⽂中的⼏个维度,⾃⼰思考⼀下。
最后想提⼀下,顺便求证:
Laravel 不念 “拉⽡”
Laravel 不念 “拉⽡”
Laravel 不念 “拉⽡”
时候不早了,有点困。今天就写到这,明天再写⼈⼯成本的考量。
⼤家晚安!谢谢
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论