Добро пожаловать в мое руководство по React и Node, посвященное созданию полнофункционального веб-сайта электронной коммерции, такого же, как Amazon. Откройте редактор кода и следуйте за мной в течение следующих часов, чтобы создать веб-сайт электронной коммерции с использованием стека MERN (MongoDB, ExpressJS, React и Node.JS).
Героку: https://react-amazona.herokuapp.com
Зеркало Heroku: https://react-amazona-mirror.herokuapp.com
HTML5 и CSS3: семантические элементы, CSS Grid, Flexbox
React: компоненты, реквизиты, события, хуки, маршрутизатор, Axios.
Redux: хранилище, редукторы, действия
Node и Express: веб-API, анализатор тела, загрузка файлов, JWT
MongoDB: Mongoose, агрегация
Разработка: ESLint, Babel, Git, Github,
Развертывание: Хероку
Посмотрите руководство по React и Node
$ git clone [email protected]:basir/amazona.git $ cd amazona
Локальная база данных MongoDB
Установите его отсюда
Создайте файл .env в корневой папке.
Установите MONGODB_URL=mongodb://localhost/amazona.
Атлас Cloud MongoDB
Создайте базу данных на https://cloud.mongodb.com.
Создайте файл .env в корневой папке.
Установите MONGODB_URL=mongodb+srv://your-db-connection
$ npm install $ npm start
# open new terminal $ cd frontend $ npm install $ npm start
Запустите это в Chrome: http://localhost:5000/api/users/seed
Он возвращает адрес электронной почты администратора и пароль
Запустите это в Chrome: http://localhost:5000/api/products/seed.
Создает 6 образцов продуктов
Запустите http://localhost:3000/signin.
Введите адрес электронной почты и пароль администратора и нажмите «Войти».
Вопросы/ответы: https://webacademy.pro/amazona
Связаться с инструктором: Басир
Введение в этот курс
что ты построишь
что ты научишься
кто такие зрители
Установить инструменты
Редактор кода
Веб-браузер
Расширение кода VS
Шаблон сайта
Создать папку Амазона
создать папку шаблонов
создать index.html
добавить HTML-код по умолчанию
ссылка на style.css
создать заголовок, основной и нижний колонтитул
элементы стиля
Показать продукты
создать раздел продуктов
добавить атрибуты продукта
добавить ссылку, изображение, имя и цену
Создать приложение React
Интерфейс создания приложения npx create-react-app
запуск НПМ
Удалить неиспользуемые файлы
скопировать содержимое index.html в App.js
скопировать содержимое style.css в index.css
заменить класс на имя класса
Поделиться кодом на Github
Инициализировать репозиторий git
Зафиксировать изменения
Создать аккаунт на GitHub
Создать репозиторий на github
подключить локальный репозиторий к репозиторию GitHub
отправить изменения на github
Создать рейтинг и компонент продукта
создать компоненты/Rating.js
создать div.рейтинг
стиль div.rating, интервал и последний интервал
Создать компонент продукта
Использовать компонент рейтинга
Создание экрана продукта
Установите реакцию-маршрутизатор-дом
Используйте BrowseRouter и Route для главного экрана
Создать HomeScreen.js
Добавьте сюда код списка продуктов
Создать ProductScreen.js
Добавьте новый маршрут из сведений о продукте в App.js.
Создайте 3 столбца для изображения продукта, информации и действий.
Создать Node.JS-сервер
запустить npm init в корневой папке
Обновить тип набора package.json: модуль
Добавьте .js в импорт
npm экспресс-установка
создать server.js
добавить команду запуска в качестве узла backend/server.js
требуют экспресс
Создать маршрут для/обратного бэкэнда готово.
перенести продукты.js из внешнего интерфейса в серверный
создать маршрут для /api/products
возврат продуктов
запустить npm start
Загрузка продуктов из серверной части
редактировать HomeScreen.js
определить продукты, загрузку и ошибку.
создать useEffect
определить async fetchData и вызвать его
установить аксиомы
получить данные из /api/products
покажи их в списке
создать загрузочный компонент
создать компонент окна сообщения
используйте их на HomeScreen
Установите ESlint для проверки кода
установить расширение VSCode eslint
npm установить -D eslint
запустите ./node_modules/.bin/eslint --init
Создайте ./frontend/.env
Добавьте SKIP_PREFLIGHT_CHECK=true.
Добавить Redux на главный экран
npm установить Redux
Создать store.js
initState= {продукты:[]}
редуктор = (состояние, действие) => переключатель LOAD_PRODUCTS: {products: action.payload}
экспортировать по умолчанию createStore(reducer, initState)
Изменить HomeScreen.js
shopName = useSelector(state=>state.products)
константная отправка = useDispatch()
useEffect(()=>dispatch({type: LOAD_PRODUCTS, payload: data})
Добавить магазин в index.js
Добавьте Redux на экран продукта
создавать константы, действия и редукторы для сведений о продукте
добавить редуктор в store.js
использовать действие в ProductScreen.js
добавьте /api/product/:id во внутренний API
Ручка кнопки «Добавить в корзину»
Обработка добавления в корзину в ProductScreen.js
создать CartScreen.js
Реализация действия «Добавить в корзину»
создавать константы, действия и редукторы addToCart
добавить редуктор в store.js
использовать действие в CartScreen.js
визуализировать carsItems.length
Создание экрана корзины
создайте 2 столбца для товаров корзины и действия корзины
carItems.length === 0 ? корзина пуста
показать изображение товара, название, количество и цену
Кнопка «Перейти к оформлению заказа»
Реализовать действие «Удалить из корзины»
Реализация действия «Удалить из корзины»
создавать константы, действия и редукторы RemoveFromCart
добавить редуктор в store.js
использовать действие в CartScreen.js
Создание образцов пользователей в MongoDB
npm установить мангуста
подключиться к монгодбу
создать config.js
npm установить dotenv
экспортировать MONGODB_URL
создать модели/userModel.js
создать userSchema и userModel
создать userRoute
Данные образцов семян
Создайте образцы продуктов в MongoDB
создать модели/productModel.js
создать схему продукта и модель продукта
создать маршрут продукта
Данные образцов семян
Создать серверную часть входа
создать /signin API
проверьте электронную почту и пароль
генерировать токен
установить веб-токен JSON
установить дотенв
вернуть токен и данные
проверьте это с помощью почтальона
Дизайн экрана входа в систему
создать экран входа
отображать поля электронной почты и пароля
создавать константы входа, действия и редукторы
Обновить заголовок на основе входа пользователя
Реализация действия входа в систему
создавать константы входа, действия и редукторы
добавить редуктор в store.js
использовать действие в SigninScreen.js
Создать экран регистрации
создать API для /api/users/register
добавить нового пользователя в базу данных
вернуть информацию о пользователе и токен
создать Регистрационный экран
Добавить поля
Поля стиля
Добавить экран в App.js
создать действие регистрации и редуктор
проверить проверку и создать пользователя
Создать экран доставки
создать компонент CheckoutSteps.js
создать поля доставки
реализовать константу доставки, действия и редукторы
Создать экран оплаты
создать поля оплаты
реализовать константу доставки, действия и редукторы
Экран оформления заказа на дизайн
Поля сводки заказа на проектирование
действие заказа на проектирование
Создать API заказа размещения
API createOrder
создать модель заказа
создать заказМаршрутизатор
создать маршрут почтового заказа
Реализация действия PlaceOrder
нажать кнопку разместить заказ
создать константы порядка размещения, действие и редуктор
Экран создания заказа
построить API заказа для /api/orders/:id
создать OrderScreen.js
действие сведений о заказе на отправку в useEffect
загрузить данные с помощью useSelector
показывать данные, такие как экран размещения заказа
создать детали заказа, константу, действие и редуктор
Добавить кнопку PayPal
получить идентификатор клиента от PayPal
установите его в файл .env
создать форму маршрута /api/paypal/clientId
создать getPaypalClientID в api.js
добавить скрипт оформления заказа PayPal в OrderScreen.js
показать кнопку PayPal
Осуществить оплату заказа
обновить заказ после оплаты
создать payOrder в api.js
создать маршрут для /:id/pay в orderRouter.js
повторная обработка заказа после оплаты
Отображение истории заказов
API создания заказов клиентов
создать API для getMyOrders
показывать заказы на экране профиля
заказы стиля
Показать профиль пользователя
создать API данных пользователя
показать информацию о пользователе
Обновить профиль пользователя
создать API обновления пользователя
обновить информацию о пользователе
Создать представление администратора
Создать меню администратора
Создание промежуточного программного обеспечения администратора в серверной части
Создать маршрут администратора во внешнем интерфейсе
Список продуктов
Экран создания списка продуктов
Добавить редуктор в магазин
показывать товары на экране
Создать продукт
создать API продукта
создать кнопку «Создать продукт»
определить продукт, создать константу, действие и редуктор
использовать действие на экране списка продуктов
Экран редактирования продукта сборки
создать экран редактирования
определить состояние
создавать поля
загрузить сведения о продукте
добавить в маршруты
Обновить продукт
определить API обновления
определить константу обновления продукта, действие и редуктор
использовать действие на экране редактирования продукта
Загрузить изображение продукта
npm установить несколько раз
определить маршрутизатор загрузки
создать папку загрузок
Обрабатывать интерфейс
Удалить продукт
создать API удаления в бэкэнде
создать константы удаления, действие и редуктор
используйте его на экране списка продуктов
Список заказов
создать API списка заказов
создать экран списка заказов
Добавить редуктор в магазин
показывать товары на экране
Удалить заказ 2. создать действие удаления заказа и редуктор 3. добавить действие удаления заказа в список заказов
Доставить заказ
создавать константы, действия и редукторы для порядка доставки
добавить действие доставки заказа на экран сведений о заказе
Публикация в Heroku
Создать git-репозиторий
Создать учетную запись героку
установить Heroku CLI
вход в героку
приложения Heroku: создать Amazona
Отредактируйте package.json для сценария сборки.
Создать профиль
Создать базу данных атласа mongodb
Установите соединение с базой данных в переменных env Heroku
Зафиксируйте и нажмите
Получение списка пользователей
создать API для пользователей списков
Экран создания списка пользователей
создать детали заказа, константу, действие и редуктор
Удаление пользователей
создать API для удаления пользователей
создать детали заказа, константу, действие и редуктор
Использовать действие в UserListScreen
Изменить пользователя
создать API для пользователей обновлений
создать пользовательский интерфейс экрана редактирования
Внедрить представление продавца
добавить меню продавца
создать маршрут продавца
список товаров для продавца
список заказов для продавца
добавить продавца в список продуктов и на экран сведений
Создать страницу продавца
создать страницу продавца
обновить компонент продукта и экран продукта
обновить маршруты продуктов
Добавить карусель самых продаваемых товаров
установить карусель реагирования
реализовать действия и редукторы для лидеров продаж
используйте карусель реагирования с данными на главном экране
Принудительный заказ товаров у одного продавца
обновить действие addToCart для покупки у одного продавца по заказу
Создать окно поиска и экран поиска
создать панель поиска в Header.js
добавить стиль
обрабатывать форму отправки
отредактируйте URL-адрес синтаксического анализа, чтобы получить строку запроса
обновить API списка продуктов для поиска по названию
Добавить фильтр расширенного поиска 1. фильтровать по категории 2. фильтровать по диапазону цен 3. фильтровать по среднему рейтингу
Полный расширенный поиск 1. фильтровать по цене 2. фильтровать по рейтингу 3. сортировать по цене, рейтингу, ...
Оценивайте и просматривайте продукты 1. оценивайте продукты 2. создавайте действия и редукторы
Выберите адрес на карте Google 1. создайте учетные данные карты Google 2. обновите файл .env с помощью ключа API Google 3. создайте API для отправки API Google во внешний интерфейс 4. создайте экран карты 5. получите API Google 6. getUserLocation 7. установите @react- google-maps/api 8. используйте его на экране доставки 9. примените карту к экрану оформления заказа
Исправление ошибки: запуск локально без проблем
добавить информацию о продавце в data.js
данные о продукте семян с информацией администратора в качестве продавца
исправить isSeller и isAdmin при обновлении пользователя
удалить авторизацию из данных пользователя
Реализация нумерации страниц
добавить нумерацию страниц в маршрутизатор продукта в серверной части
применить номер страницы к действиям и редукторам во внешнем интерфейсе
показывать номера страниц на экране поиска
Квитанция о заказе по электронной почте от mailgun 1. создайте учетную запись mailgun 2. добавьте и подтвердите свой домен в mailgun 3. установите mailgun-js 4. установите ключ API в файле env 5. измените порядок оплаты в orderRouter 6. отправьте электронное письмо
Создать экран информационной панели
Создание данных диаграммы в серверной части
Экран построения диаграммы
Внедрить онлайн-чат с клиентами
используйте сокет io для создания бэкэнда
создать компонент окна чата
создать экран поддержки
Обновите до React 17, Router 6, Mongoose 6
Бэкэнд
Удалить и установить все пакеты
удалить параметры в mongoose Connect
обернуть mailgun в try catch в orderRouter
Внешний интерфейс
Удалить и установить все пакеты
удалить в поле поиска
завернуть все в
заменить на <Route element={}>
заменить на <Route element={ }/>
заменить и тоже
Обновите PrivateRoute, AdminRoute и SellerRoute.
замените push() на Navigation() из useNavigate
замените props.match.params.id на const params = useParams();
замените props.location.search на const {search} = useLocation(); и URLSearchParams
замените props.match.path на const {pathname} = useLocation();
поместите userInfo в useEffect в ChatBox, SupportScreen