Среди сайтов выделяют две категории:
- Статические сайты состоят из готовых наборов HTML-страничек и не содержат программного кода на бэкенде. Например, так сделаны гайды Хекслета
- Динамические сайты формируют свои странички на основе информации, которую разработчики и пользователи сайта добавляют в базу данных. Наглядные примеры — соцсети или почтовые сервисы
Дальше по курсу мы будем создавать свои первые динамические сайты, но с одной особенностью. Вместо использования полноценной базы данных, мы будем работать с объектами в локальном окружении. Они имитируют работу с базой данных, но хранят все в памяти работающего приложения. Это позволит сохранять данные между запросами к сайту, но с учетом того, что они пропадут после рестарта приложения.
Почему мы так делаем? В ближайших уроках мы фокусируемся на том, как работает веб, а этого достаточно для хранения данных в памяти не отвлекаясь на работу с базой данных. Подключением базы мы займемся в конце курса.
Пример использования:
import _ from 'lodash'
const state = {
courses: [],
users: [],
}
app.post('/course', (req, res) => {
const course = { name: 'First Course', description: 'description', id: _.uniqueId() } // пример данных, позже мы научимся получать данные из формы
state.courses.push(course)
res.send(course)
})
app.delete('/course', (req, res) => {
const firstCourse = state.courses.find(course => course.name === 'First Course')
// Это одно и тоже course === firstCourse
state.courses = _.omitBy(state.courses, course => course.id === firstCourse.id)
res.send(firstCourse.id)
})
// В случае пользователей все тоже самое
app.post('/users', (req, res) => {
const user = { name: 'Mike', email: 'mike@email.com', id: _.uniqueId() }
state.users.push(user)
res.send(user)
})
app.delete('/users', (req, res) => {
const firstUser = state.users.find(user => user.name === 'Mike')
state.users = _.omitBy(state.users, user => user.id === firstUser.id)
res.send(firstUser.id)
})
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.