Rufix, конкретно, какие разделители использовать для блоков/элементов/модификаторов - каждый решает сам. Главное, соблюдать принципы BEM.
Я пишу на React следующим образом, чтобы с компонентом 1:1 было
.Block
.ComplexBlock
.Block__Elem
.CustomBlock__NewElem
.Block--active
.CustomBlock__MyElem--active
Все по-своему пишут. Можете на сайте BEM посмотреть официальные примеры и следовать им, чтобы совесть не мучила
Daeamon, держу пари, что у Вас React Router v4. Вижу два варианта (либо оба вместе)
1) Уберте PureComponent из App, не понимаю, зачем он там нужен
2) Обновитесь до React Router v5, там используется другая модель подписки, которая пробьет PureComponent.
Алексей Николаев, SOLID не нарушается в данном случае. Вопрос в том, что должен быть сервис, который вернет баланс в центах, а этими округлениями/точками должен заниматься какой-нибудь mapper/formatter в другом месте.
Радик Алиев, если они реально статические, то можете их спозиционировать и повесить "поверх" канваса. Вопрос - удобно ли Вам самому это потом поддерживать? А что, если появится завязка на внутриигровые события/состояние? Можно придумать ещё много кейсов, и ответы есть только у Вас.
Я бы предложил всё делать на phaser, ибо проще поддерживать одну инфраструктуру, вместо phaser + raw html/js
Радик Алиев, CanvasRenderingContext2D и WebGLRenderingContext имеют разные интерфейсы.
Используйте какой-нибудь pixi/phaser. Для понимания не будет лишним почитать, собственно, про различия webgl (2d, 3d) и обычный 2d канвас и написать пару простых игр
Алексей Варфоломеев, а если по бизнес-требованиям надо? финансы, биржи, букмекерки ещё больше могут захотеть.
Тут уже виртуализацию на фронте крутить надо, данные стримить с бэка, что тоже уже выходит за рамки типичных задач.
Добавить сверху условие "над кодом работает команда, код должен быть поддерживаемым годами", то тут уже совсем другие правила игры))