Создаю админку на нативном JS. Встала задача, при неизменном интерфейсе отображать различные элементы. И вот вопрос: Как это лучше делать?
1. Создавать полностью с использованием JS (через createDocumentFragment(), аппенды на div и присвоение стилией и классов)
2. Создание через innerHTML и в JS просто прописать вложенный HTML код
3. Прописать все сразу в HTML и просто скрывать элементы через display = "none" (не хотелось бы использовать такой подход, чтобы не засорять DOM, да и доступ через отладчик к элементам всегда будет)
Пожалуйста, аргументируйте свое мнение(выигрыш по производительности, чистоте кода и пр.)
Заранее спасибо ;-)
Первый вариант совершенно не читабелен и ему есть альтернатива в виде верстки js (2 вариант), но с ним проще генерировать virtual Dom (привет реакт)
Второй вариант удобен тем что есть возможность сразу и наглядно подставлять данные и генерировать блоки верстки, при этом не засоряя Dom ни лишними блоками ни лишними слушателями. Сложнее создать virtual Dom, т.к нужно много парсить
Третий вариант Засоряет все и вся блоками, слушателями и вообще медленный
Про не читаемость первого согласен, потому и задался таким вопросом.
Что значит парусить?
И что делать с элементами после использования, удалять их из DOM через remove?
lyrion, не просто удалять, а чистить все слушатели, подписки и т.д, чтоб не возникли утечки памяти. По поводу парусить, автонабор подменил— имел в виду парсить
А если надо сгенерировать блок с кучей вложенных блоков, которые не являются отдельными сущностями, а не просто картинку добавить. Представляете насколько вырастает сложность восприятия. Не зря же в react jsx придумали. Верстку визуально воспринимать легче
....... отписываем HTMLImageElement....span... и прочее
document.body.appendChild(this.main)
}
}
let arr:Array=Array<>(user1,user2.......userN)
arr.forEach((user:User)=>{
let showUser:ShowUser=new ShowUser(100,200,user)
});
Rerurk, Форматирование конечно пи***ц). Это выглядит понятно пока там нету большого числа вложенных элементов. В примере простой див, а вот если это компонент, части которого нет смысла выносить в отдельные компоненты, но их много. Разве это читабельно будет? очень сомневаюсь