Цель: научиться разделять слои абстракций и декомпозировать смешанный код.
badServer.js- пример плохого стиля программирования, все в одном файле, в одной функции, слои абстракции идут вперемешку.goodServer.js- пример более хорошего стиля программирования.
Из командной строки можно запустить node badServer и node goodServer,
для linux/unix систем, нужно использовать sudo node badServer и
sudo node goodServer потому, что HTTP сервер открывает TCP 80 порт,
а для всех портов до 1024 нужно иметь специальные права.
Нужно понять, что делает badServer.js и почему так писать плохо, потом
посмотреть пример goodServer.js и понять, где тут уровни абстракции, почему
такой код проще поддерживать и расширять, что делает его не однородным и в чем
преимущество расслоения и проектирования грамотной структры кода.
Теперь нужно переписать badServer.js, выделив минимум 2-3 разных слоя
абстракции кода, разнеся их по функциям, или даже по разным файлам.
Следующие функциональные блоки просматриваются в этом коде и их нужно разделить, понизив их сцепление:
- Слой доступа к данным (в этом примере - работы с файловой системой)
- Парсинг, сериализация и десериализация
- Сервер HTTP
3.1. Кеширование ответов
3.2. Работа с Cookie
3.3. Склеивание буфера
3.4. Логирование вызовов
3.5. Маршрутизация обработки запросов - Бизнес-логика, относящаяся к предметной области
- Управление зависимостями
- Конфигурирование (например, порт и хост)
- Подстановка переменных в шаблоны
Тут будет полезно декларативно описать задачу в виде структур данных, пример
можно взять из goodServer.js.