分離のルール-悪用しようとしないでください!

「分離のルール」に関する記事の解説は小さな別の記事に変わりました。これは、アプリケーションの開発がHello Worldよりも複雑であり、情報に基づいた意思決定と創造的なアプローチを必要とすることを示しています。







Raufは、彼の記事で 、MVCを責任分担を使用した非常に正しい設計パターンとして挙げています。 私はこれに同意しません、そして私の頭に浮かぶ最初の良いテンプレート分離はオブザーバーです。



私の意見では、MVC(MVP(Model View Presenter)テンプレートは強力ですが、かなりぼやけています)。 つまり、M、V、C / Pの間に明確な線を引くことはできません-つまり 特定のプロジェクトを参照せずに、コントローラーが終了してプレゼンテーションが開始される場所、モデル内で記述するコード、コントローラー内のコードを言うことはできません。



Web /クライアントサーバー/サーバーサイド+ JS + AJAXに関しては、ロジックとプレゼンテーションを非常に厳密に分割する必要があるという事実にも同意しません。



これは次のとおりです。



1.繰り返しますが、端がぼやけています-最も単純な例は、Svyaznoyでキオスクコンピューターを販売する同じプロジェクトです。 ここでは、もちろん、アプリケーションの詳細が役割を果たします(そして、私はそれにつながります)! バスケットがクライアント側(ブラウザ内)で保存および処理され、サーバー側に保存され、パスの最後にのみ-「注文」ボタンをクリックした後に表示されたことはありますか? これはまさに私たちが持っているものです。



2.再びぼやけた顔と同じオフラインWebアプリケーションについて(はい、はい、私はそれを封印しませんでした)。 アプリケーションには多くのクライアント側コードがあり、JavaScriptは特定の言語(コールバック、クロージャー、ランタイム拡張)です。 一部の場所では、メガハックを使用する必要がありますが、私は個人的には整頓できないようです。 たとえば、Chrome / Chromiumでの遅延レンダリングにどのように対処しますか? Chromiumがいつ/どのようにレンダリングするかについて、別の記事を遅延/計画的に計画します。



そのため、データはサーバーからAJAXを使用してプルされ、JSONで受信され、クライアントで既にレンダリングされます。アプリケーションの詳細により、JSONではなくHTMLが指定されます。



3. DOMモデル、CSS、およびJavaScriptは密接に関連しています。 丸いフレームと影のあるサイコロなど、きれいなマークアップを使用して何かをしたいと思います-しかし、それらがたくさんあると判明します-ブレーキが開始され、CSS3を使用する必要があります(簡単です-Chromiumのみがあります)。 アニメーションについては、WebKitエンジンによって親切に提供されているCSS3-Animationを使用したいと思いますが、実際には、リソース要求が遅くなること示されています。



DOM + CSS + JavaScript + AJAXの概要:



実装は、テクノロジーとチャネル幅の影響を強く受けます。 その結果、多くの場合、それがどれほど美しいかではなく、どのようにうまく機能するかが必要になります。 さて、govnokodと松葉杖が支配していることがわかりました。



しかし、MVCに戻りましょう。悪用する価値はないと言いたいです。 たとえば、最も単純なgovnosayt名刺を考えてみましょう。



各ページにはいつものように、ニュース付きのサイドバーがあります。 ここでジレンマが発生し、コントローラーとビューの間のエッジがソフトになります...



ビジネスに! コントローラーで最後の5つのニュースのコレクションを選択するのは良いことですが、私は個人的に1つの単純な理由で好きではありません-各(ほぼ)コントローラーで行わなければならないでしょう。



経験豊富なOOPスペシャリスト:)は、メインの*アクションが実行される直前に毎回起動されるfetchLastNewsメソッドで親クラスCommonControllerを選択する必要があると言います。 ありました!!! これは最新の5つのニュースだけでなく、かなり難しいサンプルであり(キャッシュは機能しない)、このニュースに使用されているページは65%だけであると想像してください。 異なる基本クラスからコントローラーを継承します??? チャプター!!! (私見)



しかし、シンプルなPHPコードを実行するテンプレートエンジンを使用している場合は、エレガントな松葉杖があります(他の言語ではどうなるか、まだよくわかりません)-通常、limb-project.comまたはnative-phpのマクロを使用します{PHP} TIN {/ PHP})のコードの実行が気に入らないので...優れたPULLテンプレートエンジンを使用している場合は、この場所でV | Cの顔を壊して、サブパターンでニュースを選択することをお勧めします。テンプレート/レイアウトステートメントに含まれています。



私はすでにMVC支持者からトマトが飛び込んでくると予測しています(そして私も彼を愛しています)が、この記事はその力に反論することを意図したものではなく、MVCで銀の弾丸を見る開発者に警告するために、コンポーネントのぼやけを強調することだけを目的としています。



特効薬はありません-黄金の意味はありますが、あなた(そして私)はまだ見つけていません。



All Articles