freekir, ну это костыль. Если вы делаете внешний контейнер для всего сайта, то странно хотеть из него выходить. А если надо выходить — не делайте общий контейнер. Все же просто.
66demon666, нет, не закидают. Просто каждая лягушка хвалит сами знаете что. Но чем опытнее разработчик, тем реже от него можно услышать реплики «фреймворк N туфта, а M крутяк!». Они все хороши. Хороший разработчик посмотрит всех и просто выберет лучшее решение под текущую задачу или под свои привычки, но не будет ни в кого кидаться тапками.
Александр Панков, так я об этом же и говорю — зачем грузить все? Грузите пакетами в фоне. Получили 20, доскроллили, получили еще 20. Плюс один запрос на count, чтобы плейсхолдеров нагененировать.
Ivan Yakushenko, вы можете его переписать, восстанавливая строчку за строчкой. Но надо оно? Теоретически можете поискать объявления нужных переменных, но, кажется, ваша задача глубже, чем вы здесь описали.
Ivan Yakushenko, пожимается не только пробел и перенос строк, но и имена переменных, функции, вычищается лишнее, объединяется, что можно объединить. Можете почитать на досуге про минификацию и обфускацию js.
Зачем вам menu.html?
Положите его на фронт, где у вас AJAX-запрос инициируется.
Или прикрепите его сюда же в ответ на post. Чтобы шаблон и данные летели вместе.
Ну тут уж только вы сами сможете отдебажить свой код.
Это ошибка говорит о том, что заголовки уже были отправлены и вы не можете еще раз в догонку отправить ответ.
То есть, где-то что-то отправляется раньше, чем вы отправляете ответ. Что это - смотрите свой код.
Рекомендую сейчас поотключать вообще все, кроме Экспресса, метода menu и вывода ответа. Когда поймете, что все в порядке и ответ работает - подключайте остальное и смотрите как оно работает/не работает.
Еще раз - ошибка не в res.send. Это ваше приложение. App.js, 254 строка. Что там у вас - знаете только вы.
И оставьте в покое async, он тут сейчас не нужен. Не надо все валить в одну кучу.