Вы сами понимаете, что ваш скрипт делает? Я смотрю и не могу понять что за элемент .cla и зачем эта проверка.
Думаю, вам необходимо для начала разобраться, как ваше модальное окно открывается.
ой всё, который раз вижу, что вы пишите о вещах в которых мало, что понимаете. Видно, что вы не работали в серьезных проектах. А ваши знания о фреймворках, о мотивации к их созданию, применению и ряда задач которые они призваны решать у вас поверхностные и размытые.
Какая вам разница, что нужно везде? Делайте то, что вам нравится. За SPA платят больше в разы. Работы много. Специалистов не хватает. Выбор проектов на любой вкус. Перспектив больше.
В разработке "простых сайтов" нет ничего интересного. А со временем у людей начинается проф деформация и многие вообще перестают расти. Не советую даже смотреть в эту сторону. Не благодарное это дело. Только если на себя работать, но тут надо быть готовым, что на этом поприще огромная конкуренция.
И, мой вам совет, скорей уже попробуйте React. Убежал с Angular год назад и познал счастье. Но это ИМХО, конечно.
Простой сайт это обычно CMS + База данных + шаблоны страниц. В основном php, так как, так исторически сложилось, что большинство самых известных CMS написаны на этом языке и у них мало сильных конкурентов.
Сам делал корпоративный сайт на Keystone.js (Node.js). Cовременным CMS на php по удобству контент менеджмента уступает, но зато для программиста нет никаких ограничений, делай что-хочешь и как хочешь.
Moskus, спасибо, что просветили как это переводится, а то работаю в западных проектах и не знаю. Отношение хоть и не прямое, а знать полезно. Решил дополнить.
Strax77, нельзя такое в конструкторе делать. Он вам и говорит прямым текстом. Используйте функции жизненного цикла. componentDidMount - для выполнения действий(обращений к api и прочих) сразу после монтирования. componentWillReciveProps - для обновления state по обновленным props. componentDidUpdate - для выполнения действий в зависимости от изменений state и props
Пока компонент не смонтирован обновлять его нельзя.
Специально для вас сделал snapshot памяти, хотя и так знаю, что дело не в таймере.
На старте в JSFiddle: 14.6MB
Спустя 10 минут: 14.3MB
Проблема в вашей функции. Таймер тут не причем.
А без таймера у вас не тормозит, потому что ваша функция не засоряет память каждую секунду.
Попробуйте вместо своей функции выводить console.log или запускать () =>{} и сами в этом убедитесь.
Можно но зачем? Если модернизируете существующее, то почему бы и нет. Метод наименьшего сопротивления. Если же делаете с нуля, берите bootstrap 4, там много полезных утилит и полная кастомизация исходников.