17611538698
webmaster@21cto.com

为什么我选择 PHP 和 Laravel 作为 2024 年的下一个项目

编程语言 0 101 2024-06-20 10:17:29

图片

导读:本文作者站在创业企业的角度,来做框架的选型,看是否对大家有参考意义。

在Sportstats(一家体育电商平台),我们正在网站上推出一个新的功能,然后与一家公司合作网站联盟与电商活动营销。

这也是一个概念验证项目,因此我们需要利用有限的资源快速开发它。

很久以前,我选择 Java 和 Spring Boot 作为主要开发工具——我认为这是个非常不错的选择,因为团队规模很小,我需要一名初级人员来协助我。我期望 Java 生态系统长期建立的环境能够帮助我们构建稳定的东西,而由于其严格的边界,生产力只会受到轻微的损失。哦,我从来没有错——我花了数十个小时来修复 JPA 和 Hibernate 并不明显、但未记录且难以实现的行为。

它不适合用于新项目。我开始四处寻找可以大幅提高生产力的方法,以快速提供网站联盟的 CRM。

我对技术栈的要求和指标包括如下:

  • 不是 Java。

  • 生产率要高。

  • 易于使用的语言和丰富的框架。
  • 内置身份验证和访问管理。

  • 管理工具。

我仔细调查和研究了我所拥有的选择,并仔细对照了对团队的利弊

选项 1:Django


图片

2014 年至 2018 年,当我在一家小型机构为客户开发产品时,使用 Django 框架的经历非常愉快。

“内置电池”是这个框架的座右铭。这个是真的做到了,但是很多时候,你必须手动连接社区创建的“电池”,这需要比执行几个命令更多的按键。

但是,django-admin 感觉已经过时了。它确实有 django-grapelli 来让事情变得更现代一些,但我无法想象用这个工具开发现代动态表单(具有复杂的客户端验证、灵活的自动完成与依赖字段)。

技术堆栈的优点:

  • Python——是最简洁的现代语言之一。

  • Django 中几乎没有什么魔法 —— 它很容易掌握。

  • 很多“内置电池”。

技术堆栈的缺点:

  • 有时覆盖 Django 的某些行为会显得太冗长

  • 管理端 UI 已冻结时间 — — 它与 10 年前一个样。

选项#2:Ruby on Rails 和Avo


图片

RoR 是一个历史悠久的成熟框架。如今,它已不再仅仅是一个 Web 框架,这得益于 Hotwire、Strada 和 Stimulus ,我们可以提供类似 SPA 的体验,甚至可以构建移动端应用程序!

该框架拥有大量集成良好的模块 - 从身份验证到后台作业,再到前端集成。这看上去是一个万无一失的解决方案,已得到许多成长为独角兽及以上级别的初创公司的验证 ,包括 Github 和 Gitlab、Shopify、AirBnB 等大厂!

其生态系统中还出现了一颗冉冉升起的新星——Avo CMS。这是我使用管理员生成器工具获得的最佳体验之一。

技术堆栈的优点:

  • 超级高效且面向未来的解决方案(感谢 37signals!)。

  • 包含很多电池。

  • 现代工具包。

  • Rails 有一个很好的脚手架生成器,用于迁移、模型和控制器。

技术堆栈的缺点:

  • Avo 的价格很高 — 对于我们的新项目来说(目前)还无法承受。

  • RoR 本身——大量的魔法和高度动态的特性为高级开发人员带来了愉快的体验,但可能埋没初级开发人员。

  • 再次是 RoR 本身——我没有使用这项技术的生产经验,因此当我的团队遇到困难时,我无法监督他们,并给出快速的解决方案。

  • RoR ;) — 魔法统治着这个世界,这使得 IDE 变得不那么有用。我听说某种语言服务器正在开发中,所以事情将会发生很大变化,但这还没有到来。

选项#3:NextJS


图片

由于过去几年我主要使用 JS 进行开发,因此我决定研究一下 NextJS 14。它带来了许多新功能,我对它的发展感到很兴奋。上次我只使用 NextJS 11,当时我不得不做很多修改,才能实现我需要的一切。

技术堆栈的优点:

  • 对 UI 复杂性没有限制。

  • SPA 和后端服务之间可共享的验证/代码。

  • 对于 SEO 来说,这不是最好的选择 —— 它仍然需要补充所有内容,这对 WebVitals 造成了很大的损害。

技术堆栈的缺点:

  • 由于 JS 非常动态,TypeScript 是必须的。到目前为止,我还没有使用过如此冗长的语言,甚至无法保证运行时的正确性。

  • 没有不需要编写良好的 API 堆栈的管理工具包。

  • NodeJS 本身不是很标准化,很难找到丰富的第三方解决方案来加快开发速度。

  • 缺少实施身份验证和访问控制的核心部分——您需要选择/创建自己的解决方案。

选项#4:Astro


图片

这是 JavaScript 社区中的一颗宝石:与任何客户端框架无缝集成和完美的 SEO,在您需要它之前根本不会加载 JS。

不过,我觉得这个项目仍处于开发的早期阶段,因为它仍缺少很多对我们来说重要的东西。

技术堆栈的优点:

  • SEO 为先。

  • 无限的 UI 变化。

  • 基于内容的网站的生产工具包。

技术堆栈的缺点:

  • 几乎与 NextJS 相同。

最终选择:Laravel + Laravel Nova


图片

尝试了上述所有选项后,我决定看看我的老朋友——PHP。我没有过多关注新闻,但我听说过 Laravel 的最新功能,如Inertia和Livewire。

在我职业生涯的早期,我一直在在使用 Laravel 5.4。这个框架在当时就给我留下了深刻的印象。

如今,它已经变得非常出色了——你可以创建任何复杂程度的网站:从 SPA 到具有类似 SPA 体验的 MPA。

而 Inertia 允许像 NextJS 一样对 Vue/React 进行 SSR 和水化!

另一方面,Livewire 让人想起很多增强版的 HTMX,如果您需要一些 UI 交互,但又不想将大量 JS 块带到前端,那么它将是完美的开发工具。

Laravel后端生态系统令人兴奋,您想要的任何东西都附带框架本身:身份验证,访问管理,后台作业,甚至实时通信框架也很强大,那就是  Laravel Reverb!

该生态系统的另一个重要组件是 Laravel Nova。这是一款基于 Inertia+Vue 和 Laravel 的超现代管理工具包。得益于丰富的组件库,它可让您与后端无缝集成,通常无需编写任何一行 JS。

技术堆栈的优点:

  • 经过实战检验的框架,具有出色的 SEO。

  • 灵活的活动记录 ORM。

  • 强大的管理工具包。

  • 包括年轻创业公司建立服务所需的一切 — — 身份验证、前端框架集成、后台作业等等。

技术堆栈的缺点:

  • 我不知道——PHP再是“主流”了?没有遵循一些“最佳实践”?

这个选择在我们团队中尚未经过实战检验,但我已经设置了 CI/CD 流程,并在 Laravel Nova 中创建了一些简单的页面。

我感到很兴奋,很久以前,我感觉使用现代化软件工程技术如此高效。当我开始将我们的后端改写为 Java 时,我有点害怕 PHP,这让我感到有点点失望,而使用 Laravel 后我们可以实现更多目标,它更适合小型初创公司,而且“虚假营销”比 Spring Boot(它自己宣传为“简单/强大的工具”)少得多。

于是我得到了一个“痛苦”的经验,那就是 Java 非常适合企业,并不是每个看起来“经过验证、简单且稳定”的框架都会那么好。如果你口袋里没有数百万美元,不要让 Spring 的“营销”欺骗了你。

祝您编码愉快!~


作者:金宝

相关网址:

https://nova.laravel.com/

https://reverb.laravel.com/

https://inertiajs.com/

https://livewire.laravel.com/

评论