Существуют библиотеки шаблонов для JavaScript, если вы хотите принять в этом участие.В общем, я бы избегал ручного склеивания строк HTML из JS, если только в этом нет особой необходимости (например, в некоторых случаях для повышения производительности при работе с очень большими таблицами).
Взлом HTML трудно читать и склонен к HTML-инъекция дыр в безопасности, когда вы не получаете правильного выхода.
Вместо этого начните с методов DOM и используйте DOM-подобные библиотеки манипулирования содержимым, чтобы упростить его.Например, если вы используете jQuery, сделайте следующее:
$('<a>', {href: somelink, text: sometext})
и , а не this:
$('<a href="'+somelink+'">'+sometext+'</a>') // insecure mess
Нет большой разницы между выборкойданные через XMLHttpRequest против включения его в сам документ HTML.Вы можете направить кучу данных JSON в одну и ту же функцию, которая будет создавать части страницы, независимо от того, была ли она просто извлечена XMLHttpRequest в операции обновления или включена в вызовы функций во время загрузки документа.
При включении данных вНа странице вам, как правило, нужно будет указать временную метку, которую они сгенерировали в любом случае, так что, если браузер вернется на страницу через некоторое время без перезагрузки, браузер сможет обнаружить, что информация устарела, и выполнить командувверх XMLHttpRequest для его обновления.
Обычный вопрос, когда вы создаете содержимое своей страницы из данных с помощью клиентского JavaScript, вы собираетесь заполнить исходную статическую HTML-версию с сервера?Если это так, вы будете дублировать большую часть своей работы по генерации контента как на клиентском JS, так и на серверном языке (*).Если нет, то вы делаете контент невидимым для пользовательских агентов, не являющихся JS, включая поисковые системы.Имеет ли это значение для вас, как правило, зависит от того, что делает приложение (т.е. нужно ли для поиска и доступности?)
(*: если вы не можете использовать серверный JavaScriptиз что-то вроде node.js и повторно используйте ваш код генерации контента. Это все еще довольно редкий подход.)