Бывает ли синхронный 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 и другие ЯП - этот вопрос не о "правильном" ЯП.
  • Вопрос задан
  • 6772 просмотра
Решения вопроса 4
@kazmiruk
Хоть Вы и просили не давать такой ответ, но для синхронного программирования не стоит использовать технологию, главный принцип которой асинхронность, так как Вы научите студентов плохому и их будет ждать много боли после окончания учебы и выхода в жестокий мир (до сих пор вспоминаю некоторых своих преподавателей тихим матерным словом). Да и не вижу проблем в асинхронном подходе для обучения. По сути "классический подход"
также асинхронен, но достигается это набором тридов, которые выполняют несколько запросов одновременно.
По сути вопроса: можно сделать код на ноде полностью синхронным используя синхронизирующую либу (waitsync, например).
Ответ написан
Комментировать
fornit1917
@fornit1917
Есть вот такая штука для псевдо-синхронного программирования на ноде: https://github.com/0ctave/node-sync
Ответ написан
Комментировать
benderskiy
@benderskiy
По теме есть вот такие штуки: Future и уже упомянутый node-sync

Не по теме: для обучения можно взять meteor — не знаю, насчёт классичности, но подходит для совсем новичков

Совсем не по теме: не стоит учить плохому, лучше посвятить одно занятие и одну лабу асинхронности и колбэкам
Ответ написан
Комментировать
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Многие методы из стандартной библиотеки имеют соответствующую синхронную пару, напр. fs.rename(oldPath, newPath, callback) и fs.renameSync(oldPath, newPath), так что можно, наверное, выкрутиться.

А вообще JS и на клиенте не отличается особой «синхронностью»: AJAX, обработчики событий — все это асинхронное, и если на сервере вдруг будет по-другому, это будет немного странно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Aquahawk
Учитесь работать асинхронно. Плакать хочется когда видишь зависающие гуи. Сетевых синхронных приложений слава богу не видел, точнее веб серверы есть но они горы процессов своих запускают. Учитесь сразу писать нормально. Нельзя научиться варить варенье из г. Берите несложные задачи но делайте правильно. Не так уж это и сложно. Нормальные программы все асинхронны. А применение синхронности там где нужна истинная асинхронность это неграмотность и некомпетентность.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы