GeekHub-2020.js icon indicating copy to clipboard operation
GeekHub-2020.js copied to clipboard

Домашенее задание № 12 - NodeJS, Express

Open redexp opened this issue 4 years ago • 6 comments

Видео: 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, то он возвращает этот файл, если нет, то передаёт управление на следующий колбек.

redexp avatar Feb 09 '21 06:02 redexp

Добрый день, основное задание можно выполнять в todo-list?

kononyukii avatar Feb 09 '21 11:02 kononyukii

нет, лучше в отдельной папке - express

redexp avatar Feb 09 '21 11:02 redexp

для связки Redux + Ajax советую посмотреть на https://redux-toolkit.js.org/api/createAsyncThunk

вместо await userAPI.fetchById(userId) - может быть await fetch('/todos/' + id) и т.п.

redexp avatar Feb 11 '21 07:02 redexp

@redexp это на сервере должен лежать собраный проект из домашки todo-list?

andrewvitrenko avatar Feb 11 '21 22:02 andrewvitrenko

@AndriiVitrenko да, на сервере

redexp avatar Feb 15 '21 06:02 redexp

Попробуйте связать ajax запросы с реактом. Например, если сервер вернул ошибку, то не просто делать console.error(err) а выводить какой-то компонент с текстом ошибки. Для этого как прийдёт ошибка - отправляйте её в стор, а компонент который её выводит подключите к стору.

redexp avatar Feb 16 '21 06:02 redexp