ettaluni
@ettaluni
ERROR MEME

Какие есть способы динамическое построения интерфейса, DOM?

Доброго дня! Вынужден писать интерфейс на Ajax запросах. Так убого получается. Нужно генерить элементы DOM из JS.
Ничего лучше Jquery я не придумал, и получается такая здоровая портянка:
let hTpl = '<div data-guid = "#GUID" class = "col-md-12 project-container__item">\
							<span class = "project-item__number">#NUMBER</span>\
							<span class = "project-item__title">#NAME</span>\
							<div class = "project-item__control">\
								<img src = "img/i_play.png">\
								<img src = "img/i_refresh.png">\
							</div>\
							<div class = "project-item__progress">\
								<progress class = "midea-progress--little" max="100" value="#PROGRESS"></progress>\
								<span class = "midea-progress--little">#PROGRESS%</span>\
							</div>\
						</div>';

						hTpl = hTpl.replaceAll('#NAME', arProject[ii].NAME);
						hTpl = hTpl.replaceAll('#GUID', arProject[ii].GUID);
						hTpl = hTpl.replaceAll('#NUMBER', ii);
						hTpl = hTpl.replaceAll('#PROGRESS', arProject[ii].PROGRESS);


Есть способы построения интерфейса красиво и лаконично? У меня все функции здоровенные.
Также я до сих пор все события назначаю через
$(document).ready(function () {
$('.js-progress-reload').click(function () {});
$('.js-progress-stop').click(function () {});
});

И опять же здоровая такая эта функция выходит, когда много написал сложно поддерживать. Может профессионалы поделятся опытом как организовывают всю логику интерфейса, может сейчас к 2021 вышли новые методики, стандарты, фреймворки. Сам я из 2015))) Последние проекты в том году писал.
  • Вопрос задан
  • 117 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Vue.js / React / Angular
Ответ написан
Stalker_RED
@Stalker_RED
Есть template в DOM, чтобы не делать replace в строке.

Есть шаблонные строки
const foo = `<div data-guid = "#GUID" class = "col-md-12 project-container__item">
              <span class = "project-item__number">${ii}</span>
              <span class = "project-item__title">${item.NAME}</span>
              <div class = "project-item__control">
                <img src = "img/i_play.png">
                <img src = "img/i_refresh.png">
              </div>
              <div class = "project-item__progress">
                <progress class = "midea-progress--little" max="100" value="${item.PROGRESS}"></progress>
                <span class = "midea-progress--little">${item.PROGRESS}%</span>
              </div>
            </div>`


Ну и есть фреймворки типа vue и react, которые довольно много всего упрощают, но и выучить их получится не за пару дней.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
E1ON
@E1ON Куратор тега JavaScript
Programming, Gamedev, VR
React, JSX
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы