Радик Алиев, если они реально статические, то можете их спозиционировать и повесить "поверх" канваса. Вопрос - удобно ли Вам самому это потом поддерживать? А что, если появится завязка на внутриигровые события/состояние? Можно придумать ещё много кейсов, и ответы есть только у Вас.
Я бы предложил всё делать на phaser, ибо проще поддерживать одну инфраструктуру, вместо phaser + raw html/js
Радик Алиев, CanvasRenderingContext2D и WebGLRenderingContext имеют разные интерфейсы.
Используйте какой-нибудь pixi/phaser. Для понимания не будет лишним почитать, собственно, про различия webgl (2d, 3d) и обычный 2d канвас и написать пару простых игр
Алексей Варфоломеев, а если по бизнес-требованиям надо? финансы, биржи, букмекерки ещё больше могут захотеть.
Тут уже виртуализацию на фронте крутить надо, данные стримить с бэка, что тоже уже выходит за рамки типичных задач.
Добавить сверху условие "над кодом работает команда, код должен быть поддерживаемым годами", то тут уже совсем другие правила игры))
Посмотрите реализации каких-нибудь "react input mask". Там вагон работы надо сделать. Особенно, работа с курсором / selection, когда происходит форматирование.
Руслан Янборисов, попробуйте исключать не "группу пробельных символов (\s)", а "ненужные символы (не цифра, не буква, итд)". Иначе можно долго с edge-cases играться.
<крик души>
Очень Вас прошу, почитайте сначала про JS, а потом уже используйте более продвинутые технологии.
И научитесь гуглом пользоваться.
</крик души>
1) Вбиваете в запрос "js convert object to array"
2) Браво
Tshmt, что 2 модели, что 20 - просто объём кода. "Сложные" - это понятие относительное. Кому-то гостевая книга будет "сложно", а кто-то проектирует Amazon/Ebay без особых усилий.