长期以来,JavaScript 生态系统中的开发者一直试图推出类似 Laravel 的应用框架或类似的产品。
我们已经看到,有适用于 NextJS 的 Blitz、适用于 NodeJS 的 Adonis、RedwoodJS 等等——所有这些框架都试图为 JavaScript 构建一个 Laravel。
但它们都没有真正成功。为什么?我们将在本文中找出原因。本文值得各位一读,因为学习 JavaScript 的初学者很难找到一劳永逸的解决方案。
这意味着当你有如此多的选择时,在 JavaScript 中选择一个框架(或库)可能会很困难。例如 React、Vue、Angular、Svelte、NextJS、Meteor 等等。
与此同时,PHP 提供了一个简单的解决方案:Laravel。它是一站式解决方案,将许多框架和库整合在一起。
但它是真正适合自己的选择吗?
在本文中,我将深入探讨为什么 JavaScript 生态系统没有类似 Laravel 的框架,以及是否应该切换到 PHP 以获得像 Laravel 这样的一站式解决方案。
我将讨论使用 JavaScript 框架与 Laravel 等一站式解决方案相比的优缺点,并以比较表作为结尾以帮助您做出决定。
我们将在本文中介绍的内容:
为什么选择 JavaScript 而不是 Laravel
为什么 JavaScript 缺乏一体化解决方案
JavaScript 框架和库的好处
Laravel 的优点
Laravel 与 JS 工具之间的区别
为什么选择 JavaScript 而不是 Laravel
当初学者决定学习 Web 开发时,他们通常会在 JavaScript/TypeScript 和 PHP 之间进行选择。其他解决方案需要更多专业知识,因此大多数初学者倾向于以上这两种语言。
许多初学者最终发现 JavaScript 庞大的生态系统令人难以承受,而 PHP 学习者常常感到受到较少的框架和缺乏高级特性的限制。
为了解决这类困惑,我比较了 JavaScript 和 PHP 当前可用的工具,而不是直接比较语言。由于 PHP 拥有大多数开发人员使用的一体化解决方案,因此我将使用 Laravel 框架进行比较。
JavaScript 缺乏单一的一体化解决方案或特定的代表性框架。因此,我将 React、Vue、Angular 等工具统称为“JavaScript 框架”。
首先了解为什么 JavaScript 生态系统缺少类似 Laravel 的框架。
为什么 JavaScript 缺乏一体化解决方案
首先,需要承认开发人员过去曾尝试过为 JavaScript 制作 Laravel。
从 RedwoodJS 开始。这是一个开源的全栈 JavaScript 框架,由 GitHub 联合创始人兼前首席执行官 Tom Preston-Werner 创立。它可以帮助开发人员更快地构建应用程序并发布。
Redwood 将许多创新解决方案整合到一个框架中。听起来很熟悉?这和 Laravel 一模一样。但是,有看到有人使用 Redwood 发布产品吗?目前没有发现。
下一个选项是 Blitz。它与 Redwood 做出了同样的承诺:替代 NextJS。Blitz 是一种一体化解决方案,具有用于身份验证、数据库等的自定义内置解决方案。
但是 Blitz 不像 Laravel 那样允许开发人员自由选择他们想要使用的解决方案。它有由核心团队精心设计的定制解决方案。开发人员不能用其他推荐的解决方案替换任何解决方案。
定制化是 JavaScript 生态系统中值得注意的一点,随着我们发现更多框架,稍后将解释原因,但是 Blitz 也没有成功。
然后,还有 AdonisJS。
但是,我想你明白我的意思了。JavaScript 中的每个一体化解决方案都试图实现各自的 Laravel 框架,但是各自都没有真正成功。
Blitz、Adonis 和 Redwood 遵循这样一个主题:为 JavaScript 开发人员构建应用程序提供现成的、非可定制解决方案的全栈框架。
这些框架之所以没有流行起来,因为它们没有满足它们所针对的开发者的真正需求。
JavaScript 生态系统是独一无二的,它为同一个问题提供了多个解决方案。这种多样性是有原因的,也是这些框架未能成功的原因。
让我们讨论一下当前流行的 JavaScript 工具的原因与优点,因为它们直接影响 JavaScript 框架和 Laravel 之间的选择。当我概述每个优点时,请考虑它是否符合您自己的需求。
JavaScript 框架与库的优点
JavaScript 框架和库是开发人员为节省时间和精力而创建的预先编写的资源、技术和功能的集合。
这些框架在 21 世纪开始出现,其中 React、Svelte、Angular、NextJS 和 Vue 等著名框架随着时间的推移开始脱颖而出。
然而,选择越多并不一定意味着效率越高。下面,我们将探讨使用 JavaScript 框架的优点和好处,以及为什么一体化解决方案在 JavaScript 生态系统中没有取得成功。
多功能性
在 JavaScript 生态系统中,切换或选择一种解决方案比另一种解决方案更加容易。例如,为了实现身份验证,我们有 Clerk、Auth0、AuthJS、NextAuth、Supabase 等。
JavaScript 生态系统始终为特定解决方案提供多种选择,而初创公司则致力于提供定制解决方案。比如您不喜欢 Clerk,可以使用 NextAuth 进行更多自定义。
JavaScript 框架的通用性非常强。当一个问题有十种解决方案时,开发人员可以轻松切换,并找到适合自己的解决方案。
Blitz 和其他框架无法成功就是因为这个原因。如果开发者不喜欢 Blitz 的身份验证方法,他们就会改用其它解决方案。
新平台
与 JavaScript 不同,其他编程语言没有围绕为语言构建工具(如库或包)的生态系统。在这些语言中,做到这些实现并不容易。
JavaScript 生态系统基本上拥有完整的注册表,其中包含适用于最小解决方案(例如电子邮件)的软件包和库。JavaScript 针对每种解决方案都提供了许多软件包、框架和库。
初创企业
每个针对特定问题的解决方案,都可能是一个由风险投资公司或天使投资人资助的初创企业。
基于 JavaScript 的初创公司拥有资本和资源来进行深入研究,并聘请最优秀的人才来为目标问题构建定制解决方案。
通过为特定主题或问题分配无限的资源,解决方案具有针对性并可满足开发人员的不同需求。
作为回报,JavaScript 开发人员向这些初创公司支付这些解决方案的费用,并激励初创公司为生态系统创造更好的解决方案。
共同开发者
JavaScript 生态系统中的任何开发者都可以在使用特定技术的过程中发现问题、构建解决方案并将其作为产品提供给用户。
JavaScript 开发人员可以自由地构建和销售他们的解决方案,因为初创公司推动了为定制解决方案付费的想法,而开发人员这样做没有任何问题。
但这些好处和原因可能对你来说难以确定。别担心——Web 开发领域提供了不止一种选择。让我们一起探索 Laravel。
Laravel
Laravel 是 PHP 编程语言的框架。Taylor Otwell 于 2011 年推出了 Laravel。
Laravel 提供多种解决方案、多种功能于一身,可满足开发者的所有需求。它提供身份验证、调试、无服务器部署、用户友好的表单系统、入门套件等功能。
Laravel 提供的解决方案很多,但是如果没有核心语言,这些都没有任何意义。
Laravel 的核心便是 PHP。
PHP 是一种通用脚本语言。Rasmus Lardof 在 20 世纪 90 年代将其介绍给开发人员。从那时起,该编程语言不断发展,并在 2004 年、2015 年和 2020 年进行了重大更新。
在 JavaScript 框架流行之前,开发人员就将 PHP 与 JavaScript 一起使用。
Laravel 属于后端框架,因为 PHP 侧重于服务端,没有框架的 JavaScript 本质上是一种客户端语言。
开发人员传统上在客户端使用 JavaScript,在服务器端使用 PHP 来创建成熟的应用程序。
但是,随着 Laravel 逐渐流行,并且 React 等框架开始主导 JavaScript 生态系统,技术堆栈格局悄然发生了变化。
全球各地的许多开发人员,尤其是印度、中国等国家的开发人员,都因为 PHP 的强大和可靠性而加倍投入。
政府网站和大型基础设施使用 Laravel (PHP),因为它在一个地方支持多种解决方案。这是因为许多开发人员并不想组合和切换技术。
使用 PHP 或 Laravel 的公司和个人希望快速发布、进行更改,并避免像 JavaScript 那样,每一步都要学习新的库或技术。
PHP 唯一的直接竞争对手是 JavaScript,这给它带来了巨大的挑战。然而,JavaScript 在很多情况下并不是最好的。让我们看看 Laravel 的表现如何。
Laravel 的优点
一站式解决方案
Laravel 是一个一体化框架。它包含开发人员构建紧凑、可靠且强大的解决方案所需要的一切。
您不需要花时间寻找可能与自己基础技术很好地集成的各种库和框架,它们都为您内置好了。
如果您优先考虑部署速度,Laravel 是理想的选择。
此外,对于使用 Laravel 的 PHP 开发人员来说,不需要学习新的库、语法等,因为一切都无缝集成。
减少时间的浪费
PHP 生态系统针对特定问题的解决方案较少。而开发人员宁愿选择一体化解决方案,也不愿花时间寻找针对特定问题的定制解决方案。
这就是 PHP 生态系统的优势所在,因为开发人员无需花费大量时间尝试不同的选项。他们已经在一个地方便拥有了一切。
如果有新项目,他们的首选就是 Laravel。在 JavaScript 领域,如果开发人员没有使用现有的解决方案或技术堆栈,他们很可能会寻找或创建一个新的东西。
稳定、坚固
使用 PHP 创建的 Web 应用程序非常强大,因为该框架经过了实战考验。您可以使用它创建任何东西。
如若你在 JavaScript 项目中对某个库或框架的选择不当,那么整个应用程序都可能被破坏。
但 Laravel 却不是这样,其破坏的可能性被降至最低。
无法追赶
使用 Laravel,您无需频繁了解新技术和框架。您可以学习一个框架、库或技能,并长期认为它有用。
与 JS 不同,Laravel 更稳定,更新频率也更低。
PHP 生态系统接收的更新较少,因此开发人员可以可靠地使用现有功能,而不必担心其他框架或库提供更好的解决方案或另一个版本。
新的框架或库不会每周出现,你不需要频繁地跟踪版本。
庞大的社区
Laravel 于十年前首次推出。随着时间的推移,它越来越受欢迎,并吸引了许多开发人员创建社区,并分享想法。
大多数的 PHP 开发人员都使用 Laravel。如果您需要任何帮助,总会有开发人员为彼此提供帮助。
免费解决方案
大多数 PHP 框架和库都是开源的,可以免费访问。而且 PHP 生态系统中很少有初创公司。
如果开发人员提供任何定制解决方案,大多数都是公开的,尤其是免费的。
任何 PHP 开发人员都可以参考这些开源免费解决方案,为其做出贡献,并进一步扩展这些解决方案。
Laravel 与 JS 工具之间的区别
您可以使用这两种技术创建任何类型的应用程序。但体验当然不会完全相同。以下是一些主要区别:
特征 | JAVASCRIPT 框架 | LARAVEL |
---|
适合初学者 | 他们经常使用 TypeScript,它对初学者很友好,并且有利于从 C、C#、Java 和 C++ 转换的开发人员 | 如果您掌握 PHP 或其他 JavaScript 框架,Laravel 会更容易采用。 |
灵活性 | 具有高度的灵活性,能够选择不同的工具和库。 | 灵活性较差,但却能提供有凝聚力和主见的结构。 |
薪水 | 使用JavaScript框架的开发人员薪水更高。 | Laravel 开发人员的薪水与 JavaScript/TypeScript 开发人员基本持平。 |
工具可用性 | JavaScript 框架随处可见且随时可用。可以从 NPM 注册表下载它们并立即开始使用。 | Laravel 为各种各样的问题提供了解决方案,但是如果您遇到其内置解决方案的问题,那么您的选择就会较少。 |
安全 | 取决于各自框架的后端设置,但如果缺乏安全措施,则可以选择其它选项。 | 它具有 CSRF 和加密等内置安全功能。 |
文档 | 取决于框架。React、NextJS 和其他一些框架具有最详细的文档,其中包含代码片段和说明。 | Laravel 具有结构化且有组织的文档,其中包含代码片段和详细解释。 |
测试和调试 | JavaScript 框架有多个测试库,例如 Jest。 | Laravel 具有内置工具,例如用于测试的 PHPUnit 集成。 |
学习曲线 | JavaScript 框架由于频繁且重大的更新以及新框架的定期发布,具有更高的学习曲线。 | Laravel 的学习曲线比较平缓,因为它的内置解决方案很容易采用,即使对于熟悉 JavaScript 框架的人来说也是如此。 |
可扩展性 | JavaScript 框架具有高度可扩展性,允许您根据需要交换库以最大限度地提高性能。 | Laravel 修改和更换解决方案的选项有限。因此,它的可扩展性较差,但可靠性较高。 |
部署和托管 | JavaScript 框架可以部署在任何 VPS 上,或者只需单击几下即可使用 Vercel。但是,它需要服务器上有 NodeJS运行时。 | Laravel 项目可以托管在任何支持 PHP 的服务器上。 |
定制 | JavaScript 框架允许轻松交换和定制,使您能够根据需要定制库或框架。 | Laravel 解决方案有限,无法修改。 |
表现 | JavaScript 框架具有高性能的动态、交互式 UI。 | Laravel 在后端流程和服务端渲染方面具有高性能。 |
未来 | JavaScript 框架不断发展,越来越多的初创企业成立,开发人员也正推出自己的解决方案。 | Laravel 不断发展,发布新的子框架和解决方案,以最有效的方式解决问题。 |
嗯,就是这样!希望你喜欢这篇文章,如果学到一些新东西,请一键三连,点赞转发留言!