Webアプリケーションでは、コード(非スクリプト言語、Java、.NET)でHTMLを使用できますか?
2つの主要なサブ質問があります:
- コードを使用してHTMLを印刷する必要がありますか、それとも表示されるHTMLを直接作成する必要がありますか?
- HTMLページ内にコードを混在させる必要がありますか?
Webアプリケーションでは、コード(非スクリプト言語、Java、.NET)でHTMLを使用できますか?
2つの主要なサブ質問があります:
一般に、プレゼンテーション (HTML) をロジック (「バックエンド」コード) から分離しておくことをお勧めします。このようにすると、コードが分離され、保守が容易になります。
HTML を記述するコードがアプリケーション ロジックから分離されていて、HTML が整形式であることが何らかの形で保証されている限り、問題はありません。
マークアップ ベースのページ (つまり、リテラル HTML を含むページ) に混在させる必要がある唯一のコードは、HTML の書式設定に使用されるコードです (たとえば、リストを書き出すためのループ)。
HTML にコードを挿入するか、純粋なコードを使用して引用符で囲まれた文字列リテラルを使用して HTML を書き出すかには、トレードオフがあります。
いいえ、優れた保守可能なソフトウェアを構築し、疎結合を実現したい場合は。
私が質問を正しく理解していれば、マークアップとバックエンド コードを混在させることは良い習慣であるかどうかを尋ねていることになります。いいえ。これは一般的に行われていますが、それでも良い考えではありません。
MVCパラダイムと、既存の乱雑な Web アプリケーションをエレガントな MVC に移行する最良の方法は何ですか? 従来の ASP をリファクタリングするためのベスト プラクティスは?
ポイントは、表示ロジックを残りのコードから分離しておくことです。複雑なサイトでは、HTML にコードが混在していますが、コードは表示のみを目的としている必要があります。複雑な計算を行うべきではありません。
たとえば、テンプレートにはループと条件が含まれます。さらに、リスト オブジェクトに基づいて <option> リストを出力するなど、HTML 固有のルーチンのライブラリもあるでしょう。
HTML とその他の 2 つの出力モードを持つアプリケーションを作成しているとします。コードの重複を避けるために、どのように記述しますか? それはおそらくあなたを正しい方向に向けるでしょう。
ビューを構成する HTML は、何らかの方法でブラウザーに送信する必要があります。.net では、各サーバー コントロールがページ ライフサイクルの一部として独自の HTML マークアップを発行します。したがって、サーバー側のコードで HTML を使用しても問題ありません。
おそらく、ASP.net パターンに従ってみてください。UI 要素を表す一連のコントロールを作成し、状態に基づいて独自の HTML を発行するようにします。
醜く、タイプセーフではありません。しかし、人々は結果なしにそれを行います。DOM を使用するか、少なくとも、タイプ セーフなセマンティクスを使用して HTML を記述するように設計されたクラスを使用することをお勧めします。また、UIとロジックを混在させるのはそれほど良いことではありません...
コードで HTML を出力するつもりなら、いいえ。正当な理由がない限り、テンプレートを使用する必要があります
今は必要ないと思っていても、後で必要になる可能性は常にあります。HTML とは異なる形式で出力したい場合や、同じデータを別の形式で表示したい場合があります。通常、これらは後で必要になるため、最初から 1 つを使用することをお勧めします。
ビジネス ロジック内で HTML を生成する言い訳はないと思います。それが単に「簡単な修正」である場合や、「戻って後で修正する」場合でさえ、それを行わないでください。
他の質問からの私の立場を繰り返しますが、HTML 内でいくつかの制御ロジック (条件、ループ) を使用してそれを構築することは問題ありません。HTML でデータ マッサージやビジネス ロジックを実行しないでください。規律を守る必要がありますが、それだけの価値があります。関心事 (ロジックと表示など) が分離されていると、メンテナンスがはるかに簡単になります。
HTML を生成するメソッドが必要な場合は、通常、それらを HtmlHelpers クラスに分離します。そうすれば、ある程度の分離を維持できます。ASP.NET MVC フレームワークは、これを非常にうまく実行します。
開発者がたくさんの html を print() するのは嫌いです。これは完全に不要であり、印刷/エコー文字列を赤で表示するテキスト エディターでは見栄えが悪くなります。
HTML/XHTML マークアップをアプリケーション ロジックから分離するために、できる限りの努力をすべきだという意見に同意します。ただし、さまざまな理由から、アプリケーション ロジックで HTML/XHTML を生成する必要がある場合があります。
このような場合、私が試みたのは、最小限のプレゼンテーション コードがアプリケーション ロジックに混在していることを確認し、他のすべてをプレゼンテーション コードに移行しようとすることです。場合によっては、すべてをプレゼンテーション レイヤーに移動できる場合がありますが、アプリケーション ロジックの一部としてマークアップを生成する方が少し簡単かもしれません。そのような場合、最善の策は、時間的に最も理にかなっているルートに行くことです。
理想的には、プレゼンテーション (UI) コードとドメイン (ビジネス ロジック) コードの間で懸念事項を分離することを目指しています。
これら 2 つの懸念事項を (どちらの方向でも) 結合することを避けるべき理由は単純です...
コードを変更する理由は 1 つだけです。これが HTML デザインの構造/スタイルの変更によるものであろうと、ビジネス ルールの変更によるものであろうと、1 か所だけ変更する必要があります。
それほどではありませんが、多くの純粋主義者は同意しませんが、ドメイン コードに HTML コードを散りばめたり、その逆を行ったりすることで、次の開発者がそれを読んだり保守したりするのを邪魔することになります。