サーバー側インクルード システムを使用して、モジュール方式で Web サイトを整理しようとしています。アイデアは、すべてのモジュールに独自の css と独自の javascript があり、ページに含まれている場合にのみ読み込まれるというものです。そのため、モジュールを持たないページは css/js モジュールも読み込まれません。
私はこのようにしました:
header.html
-----------
<!-- header start -->
<link rel="stylesheet" href="css/header.css">
<header class="module-header">
<div class="links">
links...
</div>
</header>
<script src="js/header.js"></script>
<!-- header end -->
footer.html
-----------
<!-- footer start -->
<link rel="stylesheet" href="css/footer.css">
<header class="module-footer">
<div class="links">
links...
</div>
</header>
<script src="js/footer.js"></script>
<!-- footer end -->
次にindex.htmlで:
<!DOCTYPE html>
<head>
<title>Modular page</title>
</head>
<body>
<!--#include virtual="html/header.html" -->
<!--#include virtual="html/footer.html" -->
</body>
</html>
これは正常に機能し、各モジュールの後にスクリプトがロードされるため、スクリプトを実行する前にコンテンツが存在することが保証されます。Css は直前に読み込まれ、適切なレイアウトになるようにします。
ただし、ソリューションでいくつかの問題が発生しました。
- たとえばproduct.htmlのようにモジュールを数回含める場合、これは20回繰り返されます-cssおよびjsファイルも20回含まれます。良くない。
- 一般的に、css が head タグに含まれ、js が body の最後に含まれているのを見てきました。ドキュメントが構築されているときにそれらすべてが来ると、問題が発生しますか?
これらのインクルードは、任意のインクルード、php、asp、または jsp と交換できます...これは Apache SSI を使用しています。
アイデア全体が間違った方向に進んでいますか? 私はこれを開発セットアップ用に想像しますが、ページをロードするある種のスマートな nodejs rhino スクリプトを持っています - ロードされたスクリプトと css を見つけ、連結して縮小し、本番用の単一のインクルードとして追加します。