Бывает ли синхронный Node.JS (для начального обучения веб-разработке на сервере)?
Некоторое время преподавал веб-разработку в универе, планирую возобновить эту практику.
По предыдущему опыту вывел оптимальную последовательность изучения такую:
1. HTML/CSS
2. Программирование на стороне клиента (т.е. Javascript)
3. Программирование на стороне сервера.
Вопрос именно по 3-му пункту.
Выглядит очень заманчивым для изучения принципов программирования на серверной стороне не изучать ещё один ЯП (напр., PHP), а применить Javascript же (то есть, соответственно, Node.JS).
Однако асинхронное программирование на стороне сервера требует наличия достаточно серьёзного опыта/квалификации разработчика.
Собственно, вопросы можно сформулировать так:
Есть ли способы использования Node.JS синхронно и "позади" отдельного веб-сервера (лучше Apache, можно Ngnx)?
Есть ли какие-то модули для Ноды, которые можно использовать, чтобы получать данные HTTP-запроса (заголовки, POST-переменные, и т.п.) при такой схеме?
Понимаю, что выглядит как удаление аппендицита не тем и через не то, но, повторюсь, вопрос в том, можно ли использовать Javascript/Node.JS для обучения "классическим" методам веб-программирования на сервере.
Большая просьбе - не нужно ответов типа "Синхронный Node.JS - это зло и не по фен-шую". Про это уже написано (и прочитано) достаточно много.
Также не имеет смысла рекомендовать Python, Ruby, Java и другие ЯП - этот вопрос не о "правильном" ЯП.
Хоть Вы и просили не давать такой ответ, но для синхронного программирования не стоит использовать технологию, главный принцип которой асинхронность, так как Вы научите студентов плохому и их будет ждать много боли после окончания учебы и выхода в жестокий мир (до сих пор вспоминаю некоторых своих преподавателей тихим матерным словом). Да и не вижу проблем в асинхронном подходе для обучения. По сути "классический подход"
также асинхронен, но достигается это набором тридов, которые выполняют несколько запросов одновременно.
По сути вопроса: можно сделать код на ноде полностью синхронным используя синхронизирующую либу (waitsync, например).