流明和Laravel之间的异同


181

我阅读了文档,似乎Lumen是Laravel,功能较少。我肯定错过了什么。我正在寻找Laravel和Lumen的组件和功能的对照表。有谁知道差异吗?


3
那似乎不对。Laravel是一个功能齐全的框架,其中Lumen被认为是通过牺牲一些可配置性和可扩展性而衍生自Laravel的微型框架。
fijas 2015年

3
流明几乎是Laravel,功能较少。这才是重点。
2015年


Answers:


196

更新(5.2)

在最新版本的Lumen(5.2)中,微框架专注于无状态API。
文档指出:

Lumen 5.2代表了精简Lumen的转变,使其仅专注于提供无状态的JSON API。因此,会话和视图不再包含在框架中。如果需要访问这些功能,则应使用完整的Laravel框架。


原始答案(<= 5.1)

流明与速度有关。它比Laravel更快,并且每秒可以处理更多请求。

Laravel是一个将很多组件粘合在一起的框架(第三方和Laravels自己的组件)。现在,Lumen使用了许多相同的组件,但将引导过程降至最低。您可以说这是一种“不同的胶水”,其组件(以及许多功能)大部分相同。

通过取消框架在配置方面的某些灵活性并更改默认的引导过程,可以实现性能的提高。

除此之外,更多功能默认情况下处于禁用状态,必须先激活才能使用。例如:Facades(like DB::table()
您首先需要取消注释此行bootstrap/app.php以启用它们:

// $app->withFacades();

Dotenv环境文件和Eloquent也是如此。

对于路由,Lumen使用nikic / FastRoute而不是symfonys路由器,因为它的性能要好得多,并且可以使微框架获得更大的提升。

除此之外,其他一切都与Laravel中的相同。

流明的好读


7
如果我们开始取消注释以恢复功能,那会那么快吗?
Sam Dark

1
@SamDark显然,启用的每个功能都会使它变慢。但是,由于禁用的功能只是性能优化的一部分,因此它仍然会非常快
lukasgeiter 2015年

因此,基准测试无法反映实际应用程序中的开销,在实际应用程序中,开销会更高。好。
Sam Dark

1
@SamDark 这篇博客文章解释了如何对其进行基准测试。如您所见,测试应用程序仅返回“ Hello World”而不使用模型或其他框架功能,因此实际应用程序中的性能将变慢(尽管在大多数情况下并不明显。您的应用程序仍然会非常快)
lukasgeiter

@lukasgeiter,据我所知,如果我使用RESTful Laravel API构建Ionic应用程序,那么使用Lumen更有意义吗?
mtpultz

45

Lumen并非旨在取代Laravel,而是为微服务和API设计的更加专业(且精简)的框架。它取消了API不需要的功能,例如HTTP会话和cookie,并且还限制了配置选项的数量。开箱即用的Lumen牺牲了Laravel的速度灵活性。

但是,您可以向Lumen添加Laravel组件以对其进行扩展,因此它不仅可以用于微服务和API。但是,如果您的目标是将Lumen扩展为网站,则最好使用Laravel。

他们也有不同的用例。Lumen和Laravel打算一起工作。对于经常被调用的API和服务,请使用Lumen。对于面向用户的应用程序,请使用Laravel。


这个答案来自我写的博客文章,该文章解释了Lumen和Laravel之间的区别。


据我所知,cookie,会话等仍然存在。但是,它们将被延迟加载,并且仅在使用时才真正影响性能。
lukasgeiter 2015年

现在,Lumen是我首选的框架。我不使用Eloquent(或任何ORM),所以Lumen非常适合我。
prograhammer

2
假设我正在构建一个Web应用程序,并决定编写API以进一步分离逻辑(并允许第三方应用程序轻松使用)。用Lumen编写API并使用Laravel编写网站是否是一个好习惯?
泰勒·克伦普顿

它是替代品。这是Laravel,带有其他路由器。实际上没有任何东西被剥夺-只是可选的。如果可以使用更快的Laravel(Lumen),则没有合理的理由使用Laravel。
里克·乔利

14

马特·斯塔弗的话

流明具有与Laravel相同的基础,并且具有许多相同的组件。但是Lumen是为微服务而构建的,而不是为面向用户的应用程序而构建的(尽管它可以用于任何事物。)因此,像Bootstrap和Elixir这样的前端功能以及身份验证引导程序和会话并没有开箱即用,并且扩展和更改引导文件的灵活性较小。

你可以在这里阅读更多


4
此外,流明不使用Symfony的“路由”组件。而是使用nikic / fast-route来提高性能。
利蒙·蒙特2015年

Matt Stauffer 为Laravel设计的凉亭设置仍然无法达到Laravel中默认Bootstrap UI东西的目的,而对于Elixir来说,这是一个npm install还没有完全准备好的“开箱即用”的问题。因此,通过切换到流明,我们在这些方面不会损失太多。在Lumen中,我只创建了package.json和npm安装Elixer,并设置了
Bower

但是,使用流明后,我可以告诉您有挫败感。到目前为止,我发现与Laravel相比,许多请求/路由/帮助程序是不完整的。例如,您不能执行redirect()->intended。我希望流明能赶上这些领域。我真的很喜欢没有ORM(雄辩)的Laravel,因此Lumen对我来说很有吸引力。
prograhammer

2
@prohamhammer,我认为Lumen中不会包含该特定功能。我认为那将需要Lumen故意取消的会议。另外,我不认为redirect()->intended()Lumen专注于API的用途。
泰勒·克朗普顿

1
流明是针对APIS的,而不是前端的
Lakin Mohapatra

4

流明微框架是Laravel全栈框架的轻量级版本。Lumen使用Laravel语法和组件,可以轻松地“升级”到Laravel。

Lumen是一个专门用于微服务开发和API开发的更专业的框架。因此,不需要Laravel中的某些功能(例如HTTP会话,Cookie和模板),Lumen将其删除,保留了必不可少的内容-路由,日志记录,缓存,队列,验证,错误处理以及其他一些功能。


1

为什么选择流明?

Lumen是构建基于Laravel的微服务和快速API的理想解决方案。实际上,它是现有最快的微框架之一。编写惊人的快速服务来支持您的Laravel应用程序从未如此简单。文件

Lumen是一个构建API的框架,该API本质上将为您的请求提供JSON响应。而已。

这些应用程序通常被称为Web服务

从Lumen 5.2更新开始,它不支持laravel视图,会话等...,因为您将不得不升级到完整的laravel框架。

Laravel框架的某些组件与其他软件包交换了性能。在这里检查

我们可以考虑流明的示例场景

  • 您可能想通过API向其他开发者开放应用程序的某些功能
  • 您的应用程序需要同时支持Web和移动应用程序,然后将数据存储在Lumen API中包装的数据库中将是完美的选择。
  • 当您将可扩展性作为重点时,您可能需要流明

-1

laravel和lumen之间的主要区别在于,Laravel可以具有工匠命令,而lumen没有。


这是不正确的,或者至少不是最新的。我对较旧的版本了解不多,但是我安装了lumen 7.x,并且有熟练的命令
Jonas Merhej
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.