あなたは本当にあなたのjs、html、cssを別々に保つべきですか?


10

私はあなたのjshtml、およびcssを分離しておく方がよりクリーンであるといつも聞いたり読んだりします。おそらくそれは保守、デバッグをより簡単にします。それは縮小化/キャッシュすることができますので、たぶんそれは、より効率的であり、CSSJSファイルを。

私に関する限り、Webフレームワーク(Django、Railsなど)、javascriptテンプレートライブラリなどを使用しています...単一のhtmlページを複数の再利用可能なテンプレートに分割する傾向があります。 。たとえば、ニュースフィードウィジェットや複数のウィジェットを選択することができます。各ウィジェットは、さまざまなページ全体で一貫したレイアウトを持ち、それぞれがJavaScriptの一部によって制御されています。

この組織では、可能な限りクリーンで再利用性を最大化しているように見えますが、すべてのjscssを別々のファイルに保存する方が簡単な理由を理解するのに苦労します。私はそれが例えばもっと簡単なると思います:

選択し、複数のウィジェットファイル

  • html
  • 基本的なCSSレイアウト
  • 少しのJSによる直接対話の制御とUX拡張。

ファットjsファイルをスクロールしてからファットcssファイルに切り替えてスクロールする必要がなく、HTMLファイルにもう一度切り替える必要がないため、再利用可能ではるかに保守しやすいと思います。 。

したがって、通常推奨される分離に固執する場合は、皆さんがコードを編成する方法を知りたいです。

  • そうする正当な理由は本当にありますか?
  • Web上のガイドは、通常、高度なツールを使用しないと想定しているのではないですか(この場合、ベストプラクティスのために、最新のオンラインリーディングを入手したいと思います)。
  • それは好みの問題ですか?

2
あなたがほのめかしている原則は、プレゼンテーションとコンテンツの分離
Robert Harvey、

8
ファイルに分離しないと、ユーザーはページをロードするたびに埋め込まれたHTMLとCSSをダウンロードして、一度にダウンロードしてキャッシュするのではなく、ダウンロードすることに注意してください。
ニコール

@RobertHarvey:わかりました、良いリファレンスです...しかし、コンテンツ/プレゼンテーションを分離するためにそこにリストされている唯一の理由は、マシンの可読性を向上させることです。ただし、JSを使用してページにウィジェットを追加する場合は問題ではないと思います。基本的なhtmlにはとにかくそれらが含まれていません!?
sebpiq

1
@Renesis:これは大きな欠点です、しかし真実です...しかし、たとえばDjangoを使用すると、複数のテンプレートからjsとcssを収集して単一のファイルにマージするのはかなり簡単です。
sebpiq

2
つまり、プレゼンテーション(つまり、CSS)を調整するだけで、通常のWebページ、モバイルWebページ、および印刷可能なページを提供できます。
Robert Harvey

回答:


5

私はこの構造を維持します

各ページまたはコントロールごとに、HTMLページ(またはaspx、phpなど)のフォルダーを指定します。そのフォルダーには、js、xml、images、cssファイルのフォルダーもあります。これらはページ/コントロール固有のものであり、共有リソースではありません。

サイトのルートには、js、xml、images、cssフォルダーもあり、それぞれにサイト全体のリソースが含まれています。

サイト全体のjsおよびcssファイルはサーバー側にロールアップされ、単一のjsファイルとして返されます。通常、ページごとに1つしかないため、ページ固有のものはそのまま残されます。

これにより、リソースの範囲が整理されます。そして、私はルートのjsフォルダーにダースのjsファイルを持っているかもしれませんが、それらをサーバー側で結合して縮小する(そして結果をキャッシュする)ことによって1つのjsリソースとして返されます。

また、pageyにいるとき、pagexに固有のリソースをロードしていません。唯一の「無駄」はサイト全体のリソースファイルにある可能性がありますが、キャッシュされるため、リソースの多くが複数の場所で使用されるため、より効率的です。


1
いいですね !私は単にファイルを別々のフォルダーにグループ化し、それらを収集して提供することを考えていませんでした!カプセル化を可能にしながら、キャッシング、SoCなどのすべての問題に対処します。すごい !
sebpiq

2

一般に、慣例では、コンテンツ、プレゼンテーション、および動作の分離を維持するために、JS / CSS / HTML用の個別のファイルを用意します。ただし、速度が問題になる場合は、問題が発生します。


別のファイルを使用すると、実際に速度が低下するのではなく、速度が向上します。\
Raynos

HTMLファイル内の少量のCSSおよびJSは、3つのページリクエストではなく1つのページリクエストです。これは、多数のページを非常に高速に提供するのに適している場合があります。または、少なくとも必要に応じてそれらを組み合わせる-code.google.com/speed/page-speed/docs/rtt.html
Bratch

1

複数選択ウィジェットファイル内

  • html
  • 基本的なCSSレイアウト
  • 少しのJSによる直接対話の制御とUX拡張。

私はあなたがそれを行うことを促進する組織化ツール(三位一体)を持っています。

ただし、ウィジェットファイルは、HTML、CSS、JSの3つの小さなファイルに分割されます。これは、別のファイルがあるが、それらはまだリンクされていることを意味します。

これにより、ファットファイルの問題は回避されますが、それでも別のファイルが提供されます。

したがって、懸念の分離を単に置くことは、1つの大きな HTML / CSS / JSファイルが必要であることを意味しません。<HTML, CSS, JS>再利用可能なすべてのカプセル化されたコードに対して、複数のトリプレットが必要です

これらが明確に分離されている限り、これらすべてを1つのファイルに含めることに問題はありません。

したがって、次のようなウィジェット

<div id="wrapper">
  <style scoped> CSS code </style>
  <script> JS code </script>
  HTML code
</div>

元気です、そして素晴らしいです。1つのファイルにすべてを含めることを除いて、メンテナーがCSS / JS / HTMLを混合して一致させることは非常に簡単です。

時間が経つにつれ、スパゲッティに変わるのは簡単すぎます。

人々が別々のファイルを宣伝する主な理由は2つあります

  • 別のダウンロード。css / jsコードをコピーして複数の「ウィジェット」に貼り付けたらすぐに、それを独自のファイルに分解する必要があります。
  • 単一のファイルでcss / js / htmlを適切に分離することを作成者に頼らないことで、スパゲッティコードを積極的に予防します

うん...チャドと同じ提案!実際、私はすぐに試してみましたが、販売されます:)これは、そのようにとてもすっきりしています...あなたのツールはノード用ですか?私はDjangoのためにそのようなものを見つけなければなりません...
sebpiq

@sebpiqそれはノード用ですが、私はそれをクライアントに移植しています。また、これはアルファ版であり、クライアント/サーバーコードの再利用を含めて、HTML / CSS / JS組織プラットフォーム全体にするために、かなり取り組んでいます。他のプラットフォームでこのようなものが見つかるのではないかと個人的には疑います。o/
Raynos
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.