Laramen 一套让 Laravel 与 Lumen 在同一个项目中共存的解决方案
我当前的项目 (Eyewitness.io) 是用laravel做的前端服务, 调用的API是用Lumen框架构建。
每分钟有上百台被监控的服务器建立上千个连接,最开始的时候我就知道需要用Lumen 构建API。快速的响应时间,低消耗服务器资源。开销小,这个意义重大。
但是,如果你曾经在一个项目中使用过Laravel 和 Lumen,你可能习惯在两边复制代码,或者把相同的代码打包(像Eloquent Models命令行,业务逻辑等) ,为了在两边使用。
这样做使得项目更复杂了。
最近我有个想法或者说是一个希望,在一个应用中,我既想有Laravel的全部功能,又想有Lumen的速度,不建共享的包,也不复制代码,就是一个项目有两个好处,代码在一个地方,就可以做到这样的能力。
功能如何最大化取决于 Taylor 如何将 Laravel 和 Lumen 粘合在一起,为了实现这个,我有了一些灵感,以便于这两者可以很容易共存并且根本不需要相互独立。
Laramen 的想法横空出世。
Laramen 是一种理论,允许你在一个项目中融合 Laravel 和 Lumen。这个想法很简单 -- 任何类似 /api/*
这样的路由由 Lumen 驱动,其他的都交给 Laravel。
好处在哪里?简单 -- 所有代码都在一个地方。他们是相同的应用 -- 所以你应该像这样来处理。
这是一个动态展示:
你可以在这里体验上面的动态案例: https://laramen.xyz
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的包(但我认为这应该是可行的)。
请记住,这只是一个想法的证明,我还没有完全测试它,它还可能有一些问题我是没有考虑到的,一些代码可以很容易地被重构或以一种稍微不同的方式去完成。
但我希望这是一个很好的起步。
运行Laravel应用? Eyewitness.io 是专门为Laravel构建的监控和应用分析解决方案。它可以让你知道你的Laravel应用的性能。 监控运行时间、队列、计划任务、邮件、日志、安全性、SSL、DNS等等,而且它安装超级简单---只需要90秒就能安装完成并运行起来。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
自个儿翻译不好,就坐等大神喽
很期待这篇
哦吼,没人翻译了
@科大大 翻译很厉害,说个鸡蛋里面挑骨头的,建议看下 翻译规范
@Kevinvinvin 看过了,有些全角的忘记转换了。。。
实际用起来可能还是有点出入