Я пытаюсь организовать свой веб-сайт модульным способом, используя систему включения на стороне сервера. Идея состоит в том, что каждый модуль будет иметь свой собственный 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, объединяет и минимизирует и добавляет как отдельные включения для производства.