Не просто можно а нужно.
Два классических подхода
- генерация содержимого страницы, т.е. формируется html и помещается в элемент на странице, заменяя предыдущий
- страница сразу представляет из себя все шаблоны (недоделанные страницы), размещенные в скрытых элементах, затем по нажатию кнопки этот шаблон дополняется информацией и делается видимым.
Очень часто второй способ более оправдан, его удобнее отлаживать, но скорее всего итоговый результат будет комбинацией этих подходов, когда основная структура страницы определяется самой html, но внутренние элементы доформировываются скриптом.
Нормальным подходом является хранение шаблонов тут же на странице в <script id='myTemplate' type='html/text'>....</script>, в итоге все необходимые шаблоны будут загружены при первой же загрузки страницы, и закешированы, а в дальнейшем с сервера запрашиваются только данные (по вебсокет или ajax), удобно, логично, быстро и главное разработка логично разделяет интерфейсом занимается браузер, данными - сервер.