GeekHub-2020.js
GeekHub-2020.js copied to clipboard
Домашенее задание № 12 - NodeJS, Express
Видео: https://youtu.be/6j8Y0q5FJLk
Основная задача:
Создать http сервер, который будет открывать наш todo-list
и при каждом изменении списка - сохранять список в файле todo.json
.
Для проверки задания я буду открывать http://localhost:8000
, мне должно выдать наш todo-list
с данными из todo.json
Усложнённая задача:
Хранить данные не в файле, а в базе данных MongoDB: Как установить на Ubuntu. Для работы с монгой самая популярная библиотека - Mongoose, но вы можете пользоваться любой какой захотите - awesome-mongodb
Для выполнения задания я не показал вам одну важную вещь - как сделать чтобы express отдавал статические файлы (css, картинки и т.п.). Как правило такие файлы хранят в папке public
т.е. публичные статичные файлы, т.е. которые доступны всему миру и их абсолютно безопасно отдать кому-либо в интернете. Вы просто добавляете в самом начале вот такую строчку
server.use(
require('express').static(
resolve(__dirname, 'public')
)
);
что эта строка значит - resolve(__dirname, 'public')
- вы уже знаете, server.use(function(){...})
- это тоже самое что server.all('*', function(){...})
- т.е. вызвать колбек при абсолютно любом запросе, не важно какой метод и что за урла. require('express').static('path/to/public')
- возвращает как раз колбек для server.use
- который проверяет, если req.url
указывает на файл внутри path/to/public
, то он возвращает этот файл, если нет, то передаёт управление на следующий колбек.
Добрый день, основное задание можно выполнять в todo-list?
нет, лучше в отдельной папке - express
для связки Redux + Ajax советую посмотреть на https://redux-toolkit.js.org/api/createAsyncThunk
вместо await userAPI.fetchById(userId)
- может быть await fetch('/todos/' + id)
и т.п.
@redexp это на сервере должен лежать собраный проект из домашки todo-list
?
@AndriiVitrenko да, на сервере
Попробуйте связать ajax запросы с реактом. Например, если сервер вернул ошибку, то не просто делать console.error(err)
а выводить какой-то компонент с текстом ошибки. Для этого как прийдёт ошибка - отправляйте её в стор, а компонент который её выводит подключите к стору.