Цель: научиться разделять слои абстракций и декомпозировать смешанный код.
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
.