Laramen 一套让 Laravel 与 Lumen 在同一个项目中共存的解决方案

翻译 Summer ⋅ 于 3个月前 ⋅ 最后回复由 ab0029 2个月前 ⋅ 823 阅读 ⋅ 原文地址
这是一篇社区协同翻译的文章,已完成翻译,更多信息请点击 协同翻译介绍

我现在的项目 (Eyewitness.io) 前台基于 Laravel,后台基于 Lumen。

为了解决每分钟来自成千上万台服务器的成千上万个请求,我意识到我的 API 应该从 Lumen 开始。在保证可以良好响应的同时,尽可能的降低服务器资源的消耗,这才是有意义的。

但如果你曾经在项目中使用过 Laravel 和 Lumen,你大概就会知道这里面会存在着很多重复的代码,所以你不得不整理出通用的代码(例如 Eloquent Model、console commands,或者其他逻辑等待)以便在每个项目中公用。

天啦噜,何其麻烦。

最近我一直在意淫这个想法,就是希望能够在一个应用中可以拥有 Laravel 的全部功能和 Lumen 的运行速度,不需要整理重复的代码,就可以实现既兼得两者的优势,又不用分放两处。

Kevinvinvin 翻译于 3个月前

查看其他 1 个版本

这个想法最厉害的地方就是Taylor怎么去把laravel和lumen融合在一起,理解这点让我明白到它们其实可以很容易共存,甚至它们其实根本不需要分开。

这就是为什么有了Laramen。

Laramen是这个想法的一个证明,它允许你把Laravel和Lumen合并在一起。这想法很简单 --- 所有 /api/* 路由都由Lumen去驱动,否则就是Laravel。

所以这有什么好处呢? 很简单 --- 你所有代码都在同一个项目里,它们都是同一个应用---所以我们就应该这样去做。

这里有个demo:

file

你也可以在这里访问这个demo: https://laramen.xyz

科大大 翻译于 3个月前

查看其他 1 个版本

Github地址: https://github.com/laurencei/laramen

以下功能运作良好:

  • 性能:这个解决方案其实并没有其它开销。 你的 /api/*路由只由Lumen驱动,其它就由Laravel,所以与单独使用任一解决方案相比,性能不变。
  • 测试:你可以明确的选择是使用Laravel还是Lumen去测试你的测试类,在Github代码中你可以看到这点是怎样处理的
  • 日志:你的 "Laravel" 日志输出在 "laravel.log",而如有任何关于API的错误日志则输出在"lumen.log",如果希望把他们错误日志都输出到同一个地方的话很容易实现,但我认为分开输出是比较有意义的。
  • 控制台:artisan命令还是由Laravel去控制,所以你可以使用全部的脚手架工具了。
  • 错误异常:Laravel应用使用 laravel.php 错误异常处理, 而你的API 就使用 api.php 错误异常处理,这可以让你分开处理web和API的异常。
  • 代码:你的所有代码都在同一个项目里,所有的模型,命令等等--它们都在同一个地方。

将要做的:

  • Config:我还没尝试过,但我认为我们可以用Lumen去使用 config:cache 的选项 (虽然现在还没实现),我认为这应该提升共存的兼容性,使得它没有任何性能损失。
  • Packages:我还没有试过这样会影响哪些包,特别是那些专门针对Laravel或者Lumen的包(但我认为这应该是可行的)。
科大大 翻译于 3个月前

请记住,这只是一个想法的证明,我还没有完全测试它,它还可能有一些问题我是没有考虑到的,一些代码可以很容易地被重构或以一种稍微不同的方式去完成。

但我希望这是一个很好的起步。

运行Laravel应用? Eyewitness.io 是专门为Laravel构建的监控和应用分析解决方案。它可以让你知道你的Laravel应用的性能。 监控运行时间、队列、计划任务、邮件、日志、安全性、SSL、DNS等等,而且它安装超级简单---只需要90秒就能安装完成并运行起来。

科大大 翻译于 3个月前

原文地址:https://medium.com/@laurencei/lumen-vs-l...

译文地址:https://laravel-china.org/topics/7897/la...


本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

本帖已被设为精华帖!
回复数量: 6
暂无评论~~

  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!