私はいつも、JavaScript を HTML マークアップから分離するのが良い習慣 (ala '控えめな JavaScript') だと言われてきました。しかし、Bootstrap、Angular.js、Ember.js など、多くの新しく人気のあるフレームワークでは逆の傾向が見られます。これが悪い習慣と見なされない理由を誰かに教えてもらえますか?
2 に答える
邪魔にならない Javascript は、Web 上の多くの場所で有効な方法です。あなたが言及したフレームワークは、本格的な Javascript アプリケーションを作成するためによく使用されます。これらのアプリの多くでは、Javascript を使用しない場合、多くの場合空白のページになります。そのような環境では、マークアップを Javascript から分離する価値は比較的低くなります。
私自身も同じ質問をしており、次の結論に達しました。
HTML は、ドキュメントを表示するためのマークアップ言語です。誰もがあちこちで参照しているセマンティクスは、実際にはリッチ ドキュメントの表現に関連しています。これには、よりリッチな体験を可能にする画像とリンクが含まれます。同じ原則を Word 文書にも適用できます。特定のテキストを赤でマークする代わりに、それを強調としてマークしてから、強調を赤でスタイル設定できます。これは意図を表現する意味的に正しい方法です。
問題が発生するのは、HTML には実際にユーザーの操作を可能にする要素 (フォーム) が含まれているためです。最初の設計は、専門家でなくても簡単なインタラクティブな UI を作成できるようにすることでした。さまざまなデスクトップ GUI フレームワークを確認したところ、実際のビューとビュー ロジックを分離するようなものはありません。GUI を構築するときにその分離は必要ないからです。
私にとって重要なのは、あなたが書いているものがどれだけコンテンツベースか GUI ベースかということです。HTML には 2 つの目的があるため、サーバーから何を提供すればよいかを判断するのは困難です。基本的にウィキペディアや Stackoverflow などのサイトはコンテンツ指向です。これは、ボットや古いブラウザーなど、より幅広いクライアントからアクセスできるようにしたい場合は、純粋な html をストリーミングできる必要があることを意味します。このコメントを書いているテキストエリアのように、コンテンツとよりリッチな UI エクスペリエンスを提供したい場合、2 つの可能な戦略を考えています。1 つは、html をサーバーに送信してから、GUI を初期化することです。これは控えめな JavaScript およびセマンティック HTML とも呼ばれます。これは、ほとんどのコンテンツ指向のサイトが行うことです。これは主に、コンテンツへのアクセスを容易にするブラウザーやボットの恩恵を受けるためです。もう 1 つの戦略は、クライアントのタイプを識別し、さまざまなコンテンツを提供することです。これは、クライアント側でのみ確実に実現できます。どちらの場合も html が提供されるためです。HTML がコンテンツと GUI 表現の両方として使用/悪用されているため、これはまだ最初の戦略に近いものです。
コンテンツを提供するのではなく、実際のサービス/プロセスを提供するアプリケーションを作成している場合は、AngularJS などのアーキテクチャが適しています。
私の経験では、ほとんどの企業は両方を提供する必要があります。HTML/Javascript を使用してユーザーが描画できるアプリがあるとします。このアプリは目立たないガイドラインに従う必要はありませんが、古いブラウザーでも実行できません。しかし、ユーザー間で描画をソーシャル共有し、コメントやその他のコンテンツを許可する場合は、ボットや他のクライアントがコンテンツに簡単にアクセスできるように、サイトのこの部分を作成することをお勧めします.