Когда я делаю подобное (как правило, с фрагментами просмотра страниц в стиле SPA), я обычно придерживаюсь подхода к тегу сценария, аналогичного тому, что вы делали. Это предполагает, что я использую Hogan.js, но вы можете игнорировать эти данные для примера:
<script type="text/hogan-template" id="tweet-template">
<div class="tweet">
<div class="username">{{username}}</div>
<div class="body">{{body}}</div>
<div class="date-posted">{{posted}}</div>
</div>
</script>
Отсюда вы можете получить его с помощью JavaScript, когда вам это нужно, и браузер игнорирует его как HTML.
var tweetTemplateEl = document.querySelector("#tweet-template"),
tweetTemplate = hogan.compile(tweetTemplateEl.innerHTML);
var tweetList = document.querySelector("#tweet-list"),
tweetItem = document.createElement("li");
tweetItem.innerHTML = tweetTemplate.render(tweetData);
tweetList.appendChild(tweetItem);
Для JavaScript вы можете использовать что-то вроде заполнителя на странице. Я не совсем уверен, что самый семантический тег для использования, поэтому я буду использовать div
, поскольку это, как правило, переход к тегу «по умолчанию». Так, на месте, где бы Вы разместили включаемый вы могли бы просто сделать:
<div class="script-placeholder" id="some_js_file_name" data-href="/js/some_js_file_name.js"></div>
Это может быть использован несколькими способами, но вот один вариант:
window.require = function(fileName) {
var body = document.querySelector("body"),
placeholder = document.querySelector(["#", fileName].join("")),
src = placeholder.dataset.href,
script = document.createElement("script");
script.src = src;
body.appendChild(script);
};
Что вы можете добавить к тому, что вы хотели бы инициировать требование:
someElement.addEventListener("click", function(e) {
require("some_js_file_name");
});
Это может быть то, что позволяет достичь того, чего вы хотите достичь.
ПРИМЕЧАНИЕ: Важно отметить, что если вы действительно хотите пойти по пути динамической нагрузки, вы должны, вероятно, инвестировать в созданную библиотеку, чтобы выполнить это, как CommonJS, если вы хотите, чтобы стиль требуемого, как я показал Вот. Этот рукописный образец - это просто, это образец, который даст вам представление о том, что происходит.
вы можете добавить его и установить его дисплей ни с помощью CSS. вы по-прежнему сможете получить к нему доступ. – Sammy
Это, вероятно, не должно было быть устранено в первую очередь. – j08691
Да html не является серьезной проблемой, с которой он может справиться с CSS, но я хочу, чтобы стандартный кросс-платформенный способ обеспечения безопасности Javascript. – XIMRX