|
4 | 4 |
|
5 | 5 | 1. Давайте вынесем в конфиг из примера [`9-logger`](https://github.com/HowProgrammingWorks/DDD/tree/master/JavaScript/9-logger)
|
6 | 6 | все или часть параметров, которые могут меняться: номер порта, параметры подключения к базе данных,
|
7 |
| -настройки криптографии для хеширования паролей, таймайты и то, что вам покажется полезным перенести в конфиги. |
| 7 | +настройки криптографии для хеширования паролей, таймауты и то, что вам покажется полезным перенести в конфиги. |
8 | 8 | Для конфигов мы можем использовать обычный модуль, например, файл `config.js`, рядом `main.js`,
|
9 | 9 | из которого он подгружается через `require`.
|
10 | 10 |
|
|
14 | 14 | 3. Клиентская часть API у нас поддерживает `websocket`, но не умеет работать через обычный HTTP.
|
15 | 15 | Вот код клиента: [`client.js`](https://github.com/HowProgrammingWorks/DDD/blob/master/JavaScript/9-logger/static/client.js)
|
16 | 16 | Нужно разработать вариант функции `scaffold` (динамическое создание интерфейса для работы с серверным API в рантайме),
|
17 |
| -которая бы поддерживала HTTP, лучше всего при на базе `fetch`. Добавим в функцию параметр `url`, в результате, |
| 17 | +которая бы поддерживала HTTP, лучше всего на базе `fetch`. Добавим в функцию параметр `url`, в результате, |
18 | 18 | ее сигнатура будет: `scaffold(url, structure)`. Если не знаете с чего начать, то может помочь пример функции
|
19 | 19 | [`buildAPI`](https://github.com/HowProgrammingWorks/API/blob/master/JavaScript/1-HTTP/static/client.js),
|
20 | 20 | а при необходимости посмотрите дополнительное видео про [пересаживание API с HTTP на Websocket](https://www.youtube.com/watch?v=-az912XBCu8),
|
|
30 | 30 |
|
31 | 31 | 6. Давайте заменим нашу самодельную систему модульности для написания API на `commonjs` или на `esm`, на ваш выбор. И соответственно
|
32 | 32 | отрефакторить все файлы в папке `./api`. При этом нужно будет реализовать внедрение зависимостей другим способом, на ваш выбор,
|
33 |
| -но без зависимостей. |
| 33 | +но без сторонних модулей. |
34 | 34 |
|
35 | 35 | 7. Так же поступим и с логгером, делаем его пристегиваемым: выносим в конфиги его название, при старте подгружаем нужный и перенаправляем
|
36 | 36 | `console` в него. Можете взять логгер [pino](https://github.com/pinojs/pino).
|
0 commit comments