1

単なるhtmlとは異なる方法でビューを処理するフレームワークを見つけました。正直なところ、私は主にいくつかの小さなフレームワークで作業してきたので、大きなフレームワークがこの問題をどのように処理しているかわかりません。それが私にとって興味深いことでした。簡単な例:

書く代わりに

<h2>Click on this <a href="www.example.com">example</a></h2>

入力する必要があります

echo $html->h2('Click on this' . $html->link('www.example.com', 'example'));

だから、私の質問はどちらが良いですか?プレーンHTMLはもっと速くなるのではないですか?そして、他の人にとってより理解しやすいとしましょう?または、理解できる部分は残しておきましょう。パフォーマンスや、この問題について人々が知っていて言及できるその他のことについてもっと知りたいと思います。

4

4 に答える 4

2

プログラミングの世界のすべてとして、それは好みの問題です。

しかし、いくつかの理由で、私はそれに強く反対しています。

  • PHP以外のプログラマーにとっては、ビューの記述が難しくなります。
  • 後でデバッグするのが面倒
  • 私は自分のビューをブラウザと同じように見るのが好きです。
  • 非常に単純なものに多くのオーバーヘッドを追加します
  • きれいな(そして論理的な)HTMLインデントを緩めます
  • ぶさいくな!

HTMLマークアップを正しくインデントしていれば、HTMLの問題はとにかく簡単に見つけることができます。だから私にとっては-ずっとプレーンなHTML。

ただし、一部のビューヘルパーは優れています(リンクの作成、要素クラスの処理、検証など)。私の意見では、スイートスポットを見つけてください。PHPが多すぎてビューが乱雑にならないようにしてください。ただし、確認することを諦めないでください。コードは可能な限り動的です。

于 2012-06-05T16:33:29.307 に答える
1

通常、MVCフレームワークはコードをモジュールに分割し、データベースアクション、論理アクション、およびビューを分離することでサイトをクリーンにします。メールの送信、ページ付け、画像処理、操作など、プレーンプログラミングでは複雑なタスクであり、すべてが事前定義されているため、MVCでは数行で実行できる場合もあります。上で定義した例は、パターンに従うだけですが、他の方法でも使用できます。したがって、これは別の方法です。どちらの方法でも使用できます。そのため、特定の場合にMVCが複雑になる可能性があることがわかった場合は、独自の方法でそれを行うことができます。したがって、両方の方法のオプションを提供することで、より柔軟になると思います。

それがあなたの質問に答えることを願っています。

于 2012-06-05T16:22:07.873 に答える
1

私は個人的にYiiPHPフレームワークを使用してきましたが、それでもHTMLビュー(CHtml)を処理する方法がありますが、どちらかを使用することを選択しました。プレーンHTMLのレンダリングは、フレームワークによって解釈されてHTMLとして生成されるコードで記述するよりも高速であるという解釈は理にかなっています。実際、プレーンHTMLの方が高速だと思います。

ただし、これにより、フォームサポートメソッド(検証など)やその他のヘルパーメソッドなどのダイナミックHTMLコンテンツをより柔軟に作成できます。また、これはオブジェクト指向プログラミングへの執着からさらに進化したと思います。

しかし、それに慣れるのは時間の問題です。そして、パフォーマンスについて考える場合、それが実際に違いを生むことはないと考えてください。

于 2012-06-05T16:25:57.780 に答える
0

CodeIgniterは、PHPコードを介してHTMLを生成できるようにするHTMLヘルパーを提供するフレームワークの1つです(質問の後者の場合のように)。

これはわずかに遅くなりますが、有効なHTMLが確実に出力されるという利点があります。この例を見てください:

<h2>This is a header without a closing tag

上記はよくある間違いで、黙って失敗します。ただし、HTMLヘルパー関数を使用する場合は同じ間違いを犯すことはできません

echo heading('This is a header',2);

読みやすさに関しては、PHPに精通している人なら誰でも、どちらのコードフラグメントもほとんどまたはまったく問題なく理解できるはずです。

于 2012-06-05T16:16:05.393 に答える