LumenとLaravelの違いと類似点


181

ドキュメントを読んだところ、Lumenは機能が少ないLaravelのようです。私は何かを逃しているに違いない。LaravelとLumenのコンポーネントと機能の比較表を探しています。違いを知っている人はいますか?


3
それは正しくないようです。Laravelはフル機能のフレームワークであり、Lumelは構成可能性と拡張性の一部を犠牲にしてLaravelから派生したマイクロフレームワークとして宣伝されています。
fijas 2015

3
ルーメンは、機能が少ない、かなりのLaravelです。それがポイントです。
フランク


回答:


196

アップデート(5.2)

Lumen(5.2)の最新バージョンでは、マイクロフレームワークはステートレスAPIに焦点を当てています。ドキュメントの状態:

Lumen 5.2は、Lumenをスリム化して、ステートレスなJSON APIのみを提供することに焦点を当てるシフトを表しています。そのため、セッションとビューはフレームワークに含まれなくなりました。これらの機能にアクセスする必要がある場合は、完全なLaravelフレームワークを使用する必要があります。


元の回答(<= 5.1)

ルーメンはスピードがすべてです。Laravelよりも高速で、1秒あたりにより多くのリクエストを処理できます。

Laravelは、多くのコンポーネントを接着するフレームワークです(サードパーティおよびLaravels独自のコンポーネント)。現在、Lumenは多くの同じコンポーネントを使用していますが、ブートストラッププロセスを最小限にしています。あなたはそれが「異なる接着剤」であると言うことができます、コンポーネント(そしてそれゆえ多くの機能)はほとんど同じです。

パフォーマンスの向上は、構成の面でフレームワークの柔軟性の一部を取り除き、デフォルトのブートプロセスを変更することによって達成されます。

さらに、デフォルトで無効になっている機能が多く、使用する前にアクティブにする必要があります。例として:ファサード(などDB::table()
最初に、この行のコメントを外しbootstrap/app.phpて有効にする必要があります。

// $app->withFacades();

Dotenv環境ファイルとEloquentについても同様です。

ルーメンのルーティングには、symfonysルーターの代わりにnikic / FastRouteを使用します。これにより、パフォーマンスが大幅に向上し、マイクロフレームワークがさらに大きく向上します。

それ以外はほとんどすべてがLaravelと同じです。

ルーメンの良い読み物


7
機能を取り戻すためにコメントを外す作業を始めたら、それはそれでスピーディーでしょうか?
サム・ダーク

1
@SamDark明らかに、有効にするすべての機能で少し遅くなります。ただし、無効化された機能はパフォーマンス最適化の1つにすぎないため、それでもかなり高速になります
lukasgeiter

したがって、ベンチマークは実際のアプリのオーバーヘッドを反映しておらず、実際のアプリではそれが高くなります。OK。
Sam Dark

1
@SamDark このブログ投稿では、ベンチマークの方法について説明しています。(ほとんどの場合には著しくはないが、あなたのアプリケーションは、まだ途方もなく速くなります)あなたは、実際のアプリケーションでのパフォーマンスが遅くなりますので、テスト・アプリケーションだけで、モデルや他のフレームワークの機能を使用せずに「Hello World」を返し見ることができるように
lukasgeiter

@lukasgeiterなので、RESTful Laravel APIを使用してIonicアプリを構築している場合、Lumenを使用する方が理にかなっていると思います。
mtpultz 2015年

45

LumenはLaravelに代わるものとして設計されたのではなく、マイクロサービスとAPI向けに設計された、より特殊化された(そして簡略化された)フレームワークです。HTTPセッションやCookieなどのAPIの不要な機能を取り除き、設定オプションの数も制限しました。Lumenはそのままで、速度のためにLaravelの柔軟性を犠牲にしました。

ただし、LaravelコンポーネントをLumenに追加して拡張できるため、マイクロサービスやAPI以外にも使用できます。ただし、Lumenを拡張してWebサイトにすることを目標とする場合は、代わりにLaravelを使用することもできます。

また、使用例も異なります。LumenとLaravelは一緒に動作するように設計されています。APIとサービスが頻繁に呼び出されるため、Lumenを使用します。ユーザー向けのアプリケーションの場合は、Laravelを使用します。


この回答は、私が書いた、LumenとLaravelの違いを説明するブログ投稿から引用しています。


私の知る限り、Cookie、セッションなどはまだそこにあります。ただし、それらは遅延ロードされ、使用時にのみ実際にパフォーマンスに影響します。
lukasgeiter 2015

ルーメンは今私の好みのフレームワークです。私はEloquent(または他のORM)を使用しないので、Lumenは私にとてもよく合います。
プログラハンマー2015年

2
Webアプリケーションを構築していて、さらにロジックを分離する(そしてサードパーティのアプリケーションを簡単に許可する)APIを作成するとします。LumenでAPIを記述し、LaravelでWebサイトを記述することは良い習慣でしょうか?
タイラークロンプトン2015年

代替品です。ルーターが異なるLaravelです。事実上、取り除かれたものは何もありません-オプションになりました。おそらくもっと速いLaravel(Lumen)が利用可能な場合、Laravelを使用する正当な理由はありません。
リックジョリー

14

Matt Staufferからの引用

LumenはLaravelと同じ基盤を持ち、同じコンポーネントの多くを備えています。ただし、Lumenはマイクロサービス用に構築されており、ユーザー向けアプリケーション用ではありません(ただし、何にでも使用できます)。BootstrapやElixirなどのフロントエンドの優れた機能と認証ブートストラップおよびセッションは、そのままでは有効になっていません。また、ブートストラップファイルを拡張および変更する柔軟性が低くなります。

あなたはここでもっと読むことができます


4
さらに、LumenはSymfonyのルーティングコンポーネントを使用しません。代わりに、nikic / fast-routeを使用してパフォーマンスを向上させます。
リモンモンテ

Matt StaufferのLaravel向けのバウアーセットアップは、とにかくLaravelのデフォルトのBootstrap UIスタッフの目的を無効にします。Elixirについては、npm installこれは完全に準備されているわけではないためです。したがって、Lumenに切り替えることで、これらの点で多くを失うことはありません。Lumenでは、package.jsonを作成してnpmで
Elixerを

しかし、ルーメンを使用した後、私は欲求不満があることを言うことができます。これまでのところ、リクエスト、ルーティング、ヘルパーの多くが、Laravelで利用できるものと比較して不完全であることを発見しました。たとえば、を行うことはできませんredirect()->intended。ルーメンがこれらの分野に追いつくことを期待しています。私はORM(Eloquent)のないLaravelが本当に好きなので、Lumenはとても魅力的です。
プログラハンマー2015年

2
@prograhammer、その特定の機能がLumenに含まれるとは思いません。それにはルーメンが意図的に廃止するセッションが必要だと思います。さらに、redirect()->intended()Lumenが焦点を当てているAPIでの使用はあまりありません。
タイラークロンプトン2015年

1
ルーメンはAPIS用であり、フロントエンド用ではありません
Lakin Mohapatra

4

ルーメンマイクロフレームワークは、Laravelフルスタックフレームワークの軽量バージョンです。LumenはLaravelの構文とコンポーネントを使用しており、Laravelに簡単に「アップグレード」できます。

Lumenは、マイクロサービスの開発とAPIの開発用に設計された、より専門的な(そして取り除いた)フレームワークです。そのため、HTTPセッション、Cookie、テンプレートなどのLaravelの一部の機能は不要であり、Lumenはそれらを取り除き、ルーティング、ロギング、キャッシング、キュー、検証、エラー処理などの重要な機能を維持します。


1

なぜルーメン?

Lumenは、Laravelベースのマイクロサービスの構築と高速APIの構築に最適なソリューションです。実際、これは利用可能な最速のマイクロフレームワークの1つです。Laravelアプリケーションをサポートするために驚くほど高速なサービスを作成することはかつてないほど容易になりました。ドク

LumenはAPIを構築するためのフレームワークであり、本質的にはリクエストに対するJSON応答を提供します。それでおしまい。

これらの種類のアプリケーションは、一般にWebサービスとして知られています

Lumen 5.2の更新時点では、laravelビュー、セッションなどはサポートされていません。そのため、完全なlaravelフレームワークにアップグレードする必要があります。

Laravelフレームワークの一部のコンポーネントは、パフォーマンスを優先して他のパッケージと交換されます。ここで確認してください

ルーメンを検討できるシナリオの例

  • アプリケーションの一部の機能をAPI経由で他の開発者に公開したい場合があります
  • アプリケーションがWebアプリケーションとモバイルアプリケーションの両方をサポートする必要がある場合、Lumen APIでラップされたDBにデータを格納するのが最適です。
  • スケーラビリティを重要なポイントと考える場合、ルーメンが必要になる場合があります

-1

Laravelとルーメンの主な違いは、Laravelには、ルーメンにはない職人コマンドを使用できることです。


これは真実ではなく、少なくとも最新ではありません。古いバージョンについてはあまり知りませんが、ルーメン7.xをインストールし、職人のコマンドがあります
Jonas Merhej
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.