valentine11: достаточно будет делить строку с запросами полученную из файла по определенному комментарию SQL, в идеале конечно еще сделать чтоб из комментария извлекался ключ для объекта с запросами
hrvasiliy: теперь обработчик висит на body - что уже лучше, вот только перезаписываете Вы элемент html - а следовательно body у Вас тоже новый и обработчика на нем нет
Вариант 1й: при запросе по ajax возвращать только содержимое body и перезаписывать только содержимое body - придется поправить бэкенд
Вариант 2й: снимать обработчик со старого body и вешать на новый
В любом случае, пару замечаний:
1. В чем смысл данного кода, если Вы все равно грузите страницу целиком?
2. post запросы браузеры не кэшируют, что плохо
Александр Бабич: а что обычно происходит при клике на button1?
Ваш скрипт эмитирует клик по кнопке, так как если бы на нее нажал юзер, если там ссылка - произойдет переход по ссылке
Алексей Ярков: нода - однопоточная среда, что бы использовать все ядра процессора используют кластеризацию на дочерних процессах.
Модуль cluster основаный на модуле child_process позволяет делать удобную кластеризацию для серверов, все процессы кластера будут слушать общие порты, а обработка запросов будет распределяться между ними. В офф доке есть примеры с http сервером, но сервер может быть любой (cluster патчит библиотеку net на базе которой работают любые сокеты в node)
Соответственно работать просто, из мастера запускаем воркеров, из воркеров слушаем нужный порт
А редис нужен для общения между процессами (прокидывание событий, хранение объектов, которые используются во всех воркерах и т.д.)
bernex: в пределах одного сокет соединения данные ходят последовательно, но большие данные можно разбивать на чанки и самому управлять очередями
с http2 ситуация по сути та же, правда в случае http сам браузер решает сколько потоков открыть, а в случае вебсокета все в Ваших руках, открыть несколько соединений никто не запрещает, правда у браузера могут быть свои лимиты на количество соединий на домен
насчет выигрыша в скорости у http2 ajax, http1.1 keep-alive и ws она будет примерно одинаковая (соеденение во всех случаях уже открыто), но у вебсокета есть преимущество в отсутствии заголовков
Alexander Litvinenko: Поясню, чтоб было совсем понятно, разницы в работе в php+mongo, go+mongo или node+mongo никакой нет, как и нет разницы в работе php+pg, go+pg, node+pg и так с любой БД
Alexander Litvinenko: mysql не использую уже несколько лет если честно, у меня БД выбирается под проект, как правило между PostgreSQL и MongoDB реже Neo4 (графовая)
Конкретно сейчас пишу бэк на ноде для социалки и используется именно монга (настояло руководство проекта) и это ад из денормализации связанных данных, в виде сохранить изменения в 10ки связаных сущностей, и джоинов на стороне приложения, а не базы, когда сущности подтягивают свои зависимости.
И поверьте моему многолетнему опыту, БД выбирается не по соответствию языков, а под структуру данных. И на любом языке работа с любой БД одинакова.
Вот все рекомендуют монгу для всего подряд, даже не разобравшись в чем ее задача и как она работает, это круто, просто и тд. Не круто и не просто, Вы про связанность данных слышали? а про целостность? На сложных связях межд данными любая реляционная данная выиграет и по скорости и по удобству
Roman Kitaev: Вот именно, что для простецкой формы Вы предлагаете прикрутить тяжеловесный фреймворк, хотя досаточно написать небольшой скрипт для отправки формы на почту, на чистом php это делается в 10-15 строк кода
Вот так и плодятся "разработчики", которые знают 1 фреймворк и за его пределами не способны сделать ничего.
Изучать новый язык надо без фреймворков, ИМХО
Олег Торбасов: любое выражение - это инструкция, и то что Вы не используете его значение - это Ваша проблема, а не языка.
А насчет undefined - в js динамическая типизация (типы данных преобразуются на лету), в качестве ключа объекта ожидается строка, соответственно все, что Вы используете как ключ автоматически преобразуется к строке (исключение - скаляр Symbol из es2015)