もともと、私はjQueryプラグインの作成を開始し、Backbone.jsアプリケーションに移動し、MicroJS MVCモジュールを実験していましたが、最近では、それらのプラグインが必要かどうかさえ疑問に思っています。
最近、私は新しいアプリケーションのプロトタイプを作成しており、コードはスリムで滑らかで美しいです。次に、3時間かけてそれをBackbone.jsアプリケーションに書き直しました。コードは、フィットネスモデルの小ささから、肥大化した複雑で醜い混乱に変わりました。
問題は、最近、これが常に発生することです。 MVC/MV *アーキテクチャーが導入されるとすぐに、それはすべて吐き出されます。
クライアント側でこれらのことを要求する時代と時代はもう終わったのではないかと思っています。ブラウザーは実際には非常に有能な存在であり、MV *フレームワークのすべての膨張はもう必要ないかもしれません。あなたの考えは何ですか?他の人はこれに遭遇しましたか? MVCに、またはMVCに?
たぶん、あなたのアプリケーションはそれほど大きくありませんか?私が共同で書いた最初の大きなアプリを覚えています。それは、多数の複雑なjQueryプラグインのみで構成されていました。懸念の分離はなく、コードは複雑で、テストはほとんど不可能でした。
私たちがバックボーンで書いた次のアプリ。それは私たちに構築するための基本的な構造を与えました。明らかに、Backboneは独自の問題のシェアを導入しましたが、それはさらに多くを解決しました。
私たちの問題は主にモデルとビューの変更への反応に関係しており、多数のイベントとハンドラーの制御が困難になり始めました。それでも、前回のアプリと比べて天国でした!
AngularJSでアプリを書き直すことにしました(個人的な好みで、AngularをEmberに置き換えることができ、引数はおそらく残ります)。これにより、クライアントコードを40%小さくし、維持が非常に簡単になりました。テスト性もおまけでした。手動のDOM変更よりもアプリロジックに集中できます。
要約すると、私の経験はあなたのそれとは逆です。単純なサイトの場合も、MVCは常にボイラープレートを導入し、そのメリットを体験するには特定のアプリケーションサイズが必要なので、私はあなたと同じように思います。
場合によります。
MVCは、アプリケーションの存続期間にわたってUIテクノロジを簡単に交換できるビジュアルデザインパターンです。
だからあなた自身に尋ねる必要があります:
二度と戻ってこない、汚れた小さなWebアプリケーションを捨てていますか?その場合は、MVCを気にしないでください。真剣に。
それとも、多数のビュー、そして場合によってはユーザーがページ間を移動する方法を制御するロジックの測定値さえも持つ実質的なWebアプリを作成していますか?この場合、MVCはより魅力的に見え始めます。コントローラーを再利用できる可能性が高まり、作成したHTMLページの一部を再利用できる可能性が高まります。
しかし、2つの極端な方法を見れば、意思決定が容易になります。アプリが中間にある場合は、将来を見ることをお勧めします。 希望それが何かに成長する場合、またはアプリケーションでの作業に戻り続けることがわかっている場合でも、MVCをお勧めします。はい、物事をサポートするための足場を作成して維持するにはコストがかかります。しかし、その足場は、懸念の分離を促進するのに役立ちます。そして、その分離は、将来の変更を非常に簡単にするものです。
あなたは間違った質問をしていると思います。 MVCではないか、MVCではありません。懸念の分離は常に良い考えだと思います。しかし、そのためのフレームワークを使用したいですか?そのためのフレームワークを使用せずにJavaScriptでMVCを記述することもできます。
たとえば.NETでバックエンドを行う場合、MVCフレームワークは素晴らしいと思います。ただし、ウェブサイトのバックエンドはステートレスであるため、フロントエンドに比べて構造は比較的単純です。コールバックや状態について心配する必要はありません。これが、バックエンドの万能のMVCフレームワークが機能する理由です。
フロントエンドはより複雑です。私が見たほとんどのJavaScriptフレームワークは、特別な設計を強制しています。ほとんどのJavaScript MVCは、とにかくそれほど多くを追加しません。これらのフレームワークのほとんどは、イベントをビュー側で自動的にバインドします。つまり、コントローラーでの制御が少なく、ビューがコントローラーに結合されており、適切なMVCでそれが逆になっているはずです。もう1つの問題は、GUIコードではコンポーネントにコンポーネント(おそらく別のコンポーネント)があり、これらのコンポーネントを抽象化して再利用したい場合があることです。ほとんどのMVCフレームワークでは、1つの抽象化レイヤーしか許可されていません(これは、コントローラーが十分な制御を持っていないためです)。
JavaScriptは非常に強力な言語であり、フレームワークがなくても優れたコードを記述できます。個人的に私は本「Javiscript:The Good Parts」について最も多く学び、javscriptデザインパターンについて少し読んだ。