Skip to content

Update Tasks.md #31

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Nov 9, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions JavaScript/Tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@

1. Давайте вынесем в конфиг из примера [`9-logger`](https://github.com/HowProgrammingWorks/DDD/tree/master/JavaScript/9-logger)
все или часть параметров, которые могут меняться: номер порта, параметры подключения к базе данных,
настройки криптографии для хеширования паролей, таймайты и то, что вам покажется полезным перенести в конфиги.
настройки криптографии для хеширования паролей, таймауты и то, что вам покажется полезным перенести в конфиги.
Для конфигов мы можем использовать обычный модуль, например, файл `config.js`, рядом `main.js`,
из которого он подгружается через `require`.
из которого он подгружается через `require`.

2. В конфиге сделаем ключ `transport` с вариантами значений `http` и `ws`, т.е. мы можем в конфиге переключать, по какому транспорту мы отдаем API.
Нужно соответственно поменять код в `main.js` чтобы подгружался или `http.js` или `ws.js` в соответствии с конфигом.

3. Клиентская часть API у нас поддерживает `websocket`, но не умеет работать через обычный HTTP.
Вот код клиента: [`client.js`](https://github.com/HowProgrammingWorks/DDD/blob/master/JavaScript/9-logger/static/client.js)
Нужно разработать вариант функции `scaffold` (динамическое создание интерфейса для работы с серверным API в рантайме),
которая бы поддерживала HTTP, лучше всего при на базе `fetch`. Добавим в функцию параметр `url`, в результате,
которая бы поддерживала HTTP, лучше всего на базе `fetch`. Добавим в функцию параметр `url`, в результате,
ее сигнатура будет: `scaffold(url, structure)`. Если не знаете с чего начать, то может помочь пример функции
[`buildAPI`](https://github.com/HowProgrammingWorks/API/blob/master/JavaScript/1-HTTP/static/client.js),
а при необходимости посмотрите дополнительное видео про [пересаживание API с HTTP на Websocket](https://www.youtube.com/watch?v=-az912XBCu8),
Expand All @@ -30,7 +30,7 @@

6. Давайте заменим нашу самодельную систему модульности для написания API на `commonjs` или на `esm`, на ваш выбор. И соответственно
отрефакторить все файлы в папке `./api`. При этом нужно будет реализовать внедрение зависимостей другим способом, на ваш выбор,
но без зависимостей.
но без сторонних модулей.

7. Так же поступим и с логгером, делаем его пристегиваемым: выносим в конфиги его название, при старте подгружаем нужный и перенаправляем
`console` в него. Можете взять логгер [pino](https://github.com/pinojs/pino).