В принципе работает это так, как Вы и описали. Но это не значит, что это правильно или не правильно. Тут есть свои плюсы и минусы.
Под разные задачи надо использовать разные методы. Генерацию html кода выгодно делать в тех случаях, когда его действительно много, или он нужен в разных местах, и нет острой необходимости в стилизации. Хороший пример - datepicker.