background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Build Next.js ECommerce Website Like Amazon [Nextjs, Mongodb, Tailwind]"

input logo icon
Обложка аудиозаписи
Подождите немного, мы готовим ссылки для удобного просмотра видео без рекламы и его скачивания.
console placeholder icon
Оглавление
|

Оглавление

0:00
1 Introduction
7:08
2.1 Install Tools On Mac
10:36
2.2 Install Tools On Windows
15:54
2.3 VS Code Configuration and Extensions
19:36
3 Create Next App
28:26
4 Create Github Repo
30:13
5 Create List Products Page
39:56
6 Create Details Product Page
48:58
7 Add Items To Shopping Cart
1:03:55
8 Remove Items From Cart
1:06:24
9 Create Shopping Cart Page
1:18:52
10 Connect To DB and Seed Data
1:33:52
11 Load Products From DB
1:45:03
12 Authenticate Users
2:02:50
13 Register New Users
2:20:49
14 Create Checkout Wizard
2:36:54
15 Place Order
2:55:29
16 Create Order Details Page
3:04:22
17 Pay Order By PayPal
3:22:03
18 Create Order History Page
3:31:15
19 Create User Profile Page
3:44:51
20 Publish Website On Vercel
Теги видео
|

Теги видео

codingwithbasir
coding
programming
tutorial
amazona
html
css
javascript
react
redux
node
express
mongodb
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:00
добро пожаловать во вторую версию nextjs Amazona
00:00:04
это курс кодирования, позволяющий создать полностью
00:00:06
функциональный сайт электронной коммерции, например
00:00:08
Амазонка от NEX
00:00:11
js14 мы используем новейшую функцию nextjs
00:00:15
включая серверные компоненты и действия
00:00:18
маршрутизатор приложений и обработчик маршрутов для создания
00:00:21
этот сайт электронной коммерции, не стесняйтесь добавлять
00:00:24
этот проект в свое портфолио или продать
00:00:28
ваши продукты или услуги, которые вы используете
00:00:30
красивый и полностью функциональный
00:00:32
сайт электронной коммерции, меня зовут Бассир и
00:00:35
Я буду вашим инструктором на этом курсе.
00:00:38
иметь 20-летний опыт программирования в
00:00:41
международные компании, такие как R Vision в
00:00:44
Монреаль, и теперь я инструктор по программированию.
00:00:48
к концу на YouTube будет 50 тысяч студентов
00:00:52
на этом курсе вы познакомитесь с высокими технологиями
00:00:55
Технологии в веб-разработке
00:00:57
включая сервер маршрутизатора приложений nextjs
00:01:01
действия компонентов и обработчик маршрута
00:01:04
Tailin Daisy UI иchartjs для пользовательского интерфейса
00:01:07
Фреймворк mongodb и mongos orm для
00:01:11
база данных PayPal и Stripe API для
00:01:15
подключите свой сайт электронной коммерции к
00:01:17
платежные шлюзы развернут ваш сайт на
00:01:20
облако с использованием Versal и MongoDB Atlas
00:01:24
Внедрить надежную систему аутентификации
00:01:26
используя OJ и Google выключить загрузку изображений
00:01:31
используя Cloud Inary, управляйте состоянием, используя
00:01:34
зустан и внедрить соответствующие данные и
00:01:37
кэширование с использованием S SWR, имея это
00:01:41
технологии, посмотрим, что мы собираемся сделать
00:01:43
построить вот веб-сайт, который мы создаем
00:01:46
собираемся строить вместе в шапке мы
00:01:48
есть панель поиска по бренду и Navar также
00:01:53
здесь есть боковая панель, где можно делать покупки
00:01:56
отдел на главном экране у нас есть
00:01:59
карусель
00:02:00
вот так и здесь у нас есть последние
00:02:03
продукты, нажав на продукт, который мы
00:02:06
будет перенаправлен на продукт
00:02:08
Страница сведений здесь, у нас есть изображение продукта
00:02:11
информацию о продукте и карту действий для
00:02:15
добавьте товар в корзину мы здесь
00:02:17
использование серверных компонентов и поиск
00:02:20
параметры в URL, скажем, если я
00:02:24
измените цвет на красный, будет
00:02:26
появится в строке поиска, так что это
00:02:29
будет индексироваться поисковыми системами
00:02:33
как и Google, он дружелюбен к SE и это
00:02:36
работает и для размеров, как вы видите, мы
00:02:40
здесь красный цвет и средний размер
00:02:44
у нас есть такой раздел отзывов, и вы
00:02:47
можете добавить столько отзывов, сколько захотите,
00:02:50
при нажатии на «Добавить в корзину» появляется тост
00:02:53
здесь, и вы можете перейти к оформлению заказа или
00:02:56
продолжить покупки, нажав на
00:02:59
приступайте к выезду, мы будем
00:03:01
перенаправляется на страницу корзины покупок и
00:03:04
у нас есть список продуктов в
00:03:07
корзина, давай добавим в нее еще один товар
00:03:10
карта изменить вариант добавить ее в
00:03:13
карта, и вот мы здесь, мы можем изменить
00:03:16
количество и промежуточный итог будут
00:03:20
обновляется автоматически при нажатии на
00:03:23
приступайте к выезду, мы будем
00:03:25
перенаправлены на страницу входа, и мы можем
00:03:28
создать новый аккаунт
00:03:30
как это, нажав на регистрацию
00:03:33
ввод информации в форму и
00:03:35
нажмите кнопку регистрации, тогда мы
00:03:38
быть перенаправлен на страницу входа для входа в систему
00:03:41
с зарегистрированным аккаунтом после подписания
00:03:44
мы вернемся к мастеру оформления заказа
00:03:47
после входа в систему мы приступаем к доставке
00:03:50
форма адреса введите
00:03:53
адрес нажмите «Далее» выберите платеж
00:03:57
метод, нажмите «Далее»
00:04:01
и здесь у нас есть предварительный просмотр заказа
00:04:04
нажав на разместить заказ заказ будет
00:04:08
создано и основано на способе оплаты
00:04:12
у нас есть варианты оплаты, нажав
00:04:15
на PayPal он будет перенаправлен на
00:04:18
PayPal, чтобы завершить платеж, нажав
00:04:21
по завершению
00:04:23
покупка там, мы здесь, мы возвращаемся к
00:04:27
веб-сайт, но на этот раз оплата
00:04:29
выполнено, и статус был обновлен в
00:04:34
точка зрения клиента у нас есть
00:04:36
меню для клиента включает в себя
00:04:39
профиль пользователя, мы можем обновить имя пользователя
00:04:42
электронное письмо и обновите пароль, и мы
00:04:46
иметь историю заказов, чтобы показать список
00:04:49
предыдущие заказы для пользователя один из
00:04:52
лучшая функция этого сайта - поиск
00:04:55
вы можете искать по названию продукта, скажем
00:04:58
рубашка и нажмите Enter, вы будете
00:05:01
перенаправлен на страницу поиска, и вы
00:05:04
возможен поиск по ценам отделов и
00:05:08
отзыв клиента также вы можете отсортировать
00:05:11
продукты по цене новейшие и
00:05:14
рейтинг и VR вы можете очистить фильтр
00:05:18
и снова выполните поиск по фильтрам слева
00:05:22
сторона, давайте перейдем к панели администратора и
00:05:25
проверьте точку зрения администратора на этот счет
00:05:29
веб-сайт econ mer. Я просто выхожу из системы и
00:05:32
войдите в систему с учетной записью администратора, затем перейдите в
00:05:35
меню и нажмите на панель администратора
00:05:38
вот и у нас есть красивый
00:05:41
панель мониторинга, здесь есть раздел статистики
00:05:44
отчет о продажах с использованием красивых диаграмм
00:05:48
давайте рассмотрим возможности административной части
00:05:51
у нас есть заказы здесь, у нас есть список всех
00:05:54
заказы, скажем, на этот заказ мы просто
00:05:58
создано прямо сейчас, я могу изменить
00:06:02
статус этого заказа доставлен
00:06:06
нажатие кнопки «Отметить» предоставило статус
00:06:09
будет обновлено следующее меню в админке
00:06:12
панель управления управляет продуктами, здесь мы
00:06:15
есть список всех продуктов, которые я могу создать
00:06:19
новый или я могу отредактировать предыдущий
00:06:22
продукт в списке, давайте нажмем «Изменить»
00:06:25
мы можем изменить ценности, изменить
00:06:29
загрузить новое изображение изменить цену
00:06:32
запас контента и другие особенности
00:06:35
продукт также мы можем удалить продукты по
00:06:39
нажав на кнопку удаления, приступим к
00:06:41
последняя часть панели администратора, это
00:06:43
пользователи, вы можете редактировать или удалять пользователей и
00:06:48
изменить их разрешение, скажем, на
00:06:51
последний пользователь, которого я нажимаю, изменить и изменить
00:06:54
это разрешение пользователя на
00:06:57
Админ, мы молодцы, пора переходить к делу
00:07:00
написать код и реализовать этот потрясающий проект
00:07:08
вместе на этом уроке мы собираемся
00:07:10
установить инструменты разработки, включая Интернет
00:07:14
редактор кода браузера. Контроль версий и
00:07:17
JavaScript Runner, давайте сделаем это, давайте
00:07:21
начните с редактора кода, это vs код, перейдите к
00:07:25
эту ссылку и базу вашей операционной системы
00:07:28
нажмите для меня синюю кнопку загрузки
00:07:32
это Mac, поэтому я нажимаю на Mac и делаю это
00:07:35
быть перенаправлен на другую страницу и новый
00:07:38
файл будет загружен в мою загрузку
00:07:41
папка после загрузки дважды щелкните по ней
00:07:45
следуйте инструкциям по установке и установите vs
00:07:48
код на вашем компьютере, давайте перейдем к
00:07:51
следующий — Google Chrome в веб-версии
00:07:54
браузере перейдите на google.com/chrome и сюда
00:07:59
через некоторое время нажмите «Загрузить Chrome»
00:08:02
Chrome начал загрузку и типа что
00:08:05
мы сделали это в коде vs, просто дважды щелкнув по нему
00:08:08
загруженный файл следуйте
00:08:10
инструкция и у вас будет Google
00:08:12
Chrome на вашем компьютере в следующий раз
00:08:15
программное обеспечение дома, это пакет
00:08:18
менеджер для Mac OS и Linux перейдите на
00:08:23
заваривать. и скопируйте эту команду, затем откройте
00:08:27
ваш код vs и из меню терминала
00:08:30
нажмите на новый терминал, вставьте команду
00:08:33
здесь и нажмите Enter, для этого нужен ваш администратор
00:08:37
пароль введите его и он запустится
00:08:40
установка хуру на ваш компьютер после
00:08:43
установка хуру переходим к следующему пакету
00:08:47
это мерзавец, зайди на gs cm.com
00:08:51
скачать и на основе ваших операционных
00:08:54
система выберите ту, которую я использую
00:08:57
Mac OS, и вот ее очень легко запустить
00:09:01
Заварить установку git Заварить установку git запустить его
00:09:06
в вашем интегрированном терминале в коде vs
00:09:09
и он начнет установку git на ваш
00:09:12
компьютер, последний пакет — nodejs, это
00:09:16
среда выполнения JavaScript, которую мы
00:09:19
необходимо для создания бэкэнда и сборки
00:09:22
фронт и проект у вас есть два варианта
00:09:25
LTS и текущий. Я выбираю текущий для использования.
00:09:28
последняя функция node.js, нажмите
00:09:31
он и начинает установку nodejs, например
00:09:35
Код KW и vs просто дважды щелкните значок
00:09:37
скачанный файл следуйте инструкциям
00:09:40
и у вас будет узел на вашем компьютере
00:09:43
отлично, git установлен, давайте проверим
00:09:46
установка других пакетов закрыть
00:09:50
это и откроем его снова, давайте начнем с
00:09:55
введите версию узла node DV и нажмите
00:09:58
введите ах, здесь мы используем версию 19
00:10:03
для npm DV это менеджер пакетов
00:10:07
узел, это версия 9, давайте проверим git, мы
00:10:11
используете версию
00:10:14
2.39 вот и все необходимое мы установили
00:10:17
пакеты и инструменты для развития электронной коммерции
00:10:21
сайт машинописный Мир в следующем
00:10:24
сеанс мы устанавливаем расширения для vs
00:10:28
код и подготовьте его для разработки нашего
00:10:35
проект, если вы используете Windows
00:10:38
операционная система, посмотрите этот урок, чтобы
00:10:41
посмотрите, как вы можете установить все требования
00:10:44
инструменты для развития в этом курсе позволяют
00:10:48
начнем с установки Google Chrome
00:10:51
откройте свой по умолчанию
00:10:53
браузер, в котором я использую Microsoft Edge
00:10:56
Windows и введите Chrome скачать вниз
00:10:59
загрузите в адресную строку, затем выберите это
00:11:02
адрес
00:11:04
google.com/chrome и нажмите
00:11:07
скачать Chrome после загрузки Chrome
00:11:10
нажмите «Настройка Chrome». EXA подтвердить нажмите
00:11:14
да, а затем начинается загрузка Chrome
00:11:18
на вашем компьютере после этого он установится
00:11:21
Гугл Хром там мы есть нет
00:11:24
нужно Microsoft Ed закрыть его и
00:11:27
развернуть Google Chrome Chrome — это
00:11:30
браузер по умолчанию для веб-разработки
00:11:33
в этом курсе и пришло время установить
00:11:36
закодированное сохранение в адресной строке типа VSS
00:11:40
код и нажмите Enter, мы собираемся
00:11:42
установите здесь код Visual Studio
00:11:45
компьютерная потрясающая загрузка для Windows, если
00:11:49
вы используете другую операционную систему
00:11:52
вы можете скачать их здесь, используя
00:11:54
стабильную загрузку для Windows вы будете
00:11:57
будет перенаправлен на эту страницу, и она начнется
00:12:01
загрузка кода VSS в ваших загрузках
00:12:04
папка после загрузки нажмите на нее
00:12:06
нажмите «Выполнить» и примите, выберите
00:12:10
параметры по умолчанию и нажмите «Установить»
00:12:15
нажмите кнопку «Готово», и вот мы здесь
00:12:19
у нас есть код Visual Studio, открытый в нашем
00:12:23
компьютер развернуть его и вернуться к
00:12:27
Google Chrome и установить установить
00:12:29
node.js введите node.js и нажмите Enter
00:12:34
здесь нажмите на node.js, вы будете
00:12:36
перенаправлен на
00:12:52
nodejs.org
00:12:57
выберите параметры по умолчанию и установите
00:13:01
node.js на вашем компьютере и последний
00:13:04
вещь, которую мы собираемся установить здесь
00:13:06
это получить, введите get и нажмите Enter и
00:13:11
выберите этот git Das cm.com, нажмите
00:13:17
он выбирает загрузку и на основе вашего
00:13:21
операционная система выберите правильную
00:13:24
Я использую Windows, нажмите здесь, чтобы загрузить
00:13:27
последнюю версию, а затем нажмите
00:13:31
файл установщика, нажмите «да», и вот мы
00:13:34
нажимаем «Далее» здесь, мы собираемся
00:13:38
установите git bash и выберите git UI
00:13:41
параметры по умолчанию следующий следующий выбор по умолчанию
00:13:46
один щелчок далее далее снова по умолчанию
00:13:50
опции по умолчанию телефон по умолчанию следующий следующий
00:13:56
нажмите «Установить», поэтому я сделал это
00:13:58
принять параметры по умолчанию для установки git
00:14:03
Windows потрясающая, там написано, что завершено
00:14:06
установка git и нажмите «Готово»
00:14:10
нажмите escape и перейдем к коду vs и
00:14:15
в меню терминала выберите новый терминал
00:14:18
и вместо оболочки по умолчанию, которая
00:14:22
Power Shell, я собираюсь использовать git bash
00:14:25
но я собираюсь сделать это по умолчанию
00:14:28
профиль, поэтому нажмите «Выбрать по умолчанию»
00:14:30
профиль и, установив git bash, мы
00:14:33
есть эта опция здесь, выберите git bash
00:14:36
затем нажмите на плюс, и на этот раз у нас есть
00:14:41
git bash в Windows, чтобы мы могли запускать Linux
00:14:45
как команды в Windows и повсюду
00:14:49
в этом уроке мы используем этот стиль команд в
00:14:52
терминал Давайте проверим версию
00:14:55
git git Дас Дас
00:14:59
версию, поэтому мы используем версию 2.
00:15:04
34.1, поэтому ваши версии могут быть выше
00:15:07
все в порядке, давайте проверим версию узла
00:15:10
узел Дас Дэш
00:15:12
версия потрясающая, мы используем версию
00:15:16
16.
00:15:18
13.1 проверьте версию npm, которая нам нужна
00:15:22
их для этого курса, и мы используем
00:15:26
версия 8.1 вот и все
00:15:30
установка Google Chrome Visual Studio
00:15:33
напишите node.js и войдите в Windows
00:15:37
операционную систему на следующем уроке мы
00:15:41
настроить код Visual Studio для кода
00:15:45
проще, умнее и лучше во всем
00:15:49
этот
00:15:53
Конечно, на этом уроке мы собираемся
00:15:56
установить расширения для vs кода и
00:16:00
настройка vs код для разработки, давайте
00:16:03
сделайте это в своем коде VSS, нажмите
00:16:06
значок расширения, и вот мы, только мы
00:16:10
нужно три расширения, es7 реагирует
00:16:14
фрагмент так напечатай
00:16:18
es7 реагирует в поле поиска, выберите
00:16:22
первый пункт и нажмите кнопку установки I
00:16:25
уже установил его, так что я могу удалить
00:16:28
кнопка, но после установки этого пакета
00:16:31
переходи к следующему, это ссылка, мы
00:16:35
нужна ссылка es, чтобы найти проблемы в нашем коде
00:16:39
если у вас его нет, просто введите es Link
00:16:42
в поле поиска выберите первое
00:16:45
вариант и снова нажмите кнопку «Установить».
00:16:48
и последнее расширение, которое нам нужно, это
00:16:51
prer введите уровень PR в поиске расширения
00:16:56
поле выберите первый элемент и там
00:17:01
мы - это форматировщик нашего кода
00:17:06
нажмите кнопку установки и после
00:17:08
устанавливая эти три пакета, мы
00:17:11
готовы к настройке, а не к коду, приступим
00:17:14
это из меню справки в vs code, выберите шоу
00:17:19
все команды и введите пользовательские настройки
00:17:23
выберите Json, а не тот
00:17:26
В пользовательском интерфейсе выберите это, и вот все
00:17:31
настройку, которая нам нужна в нашем проекте из
00:17:34
этих настроек всего пять настроек
00:17:38
требуется, а другие не являются обязательными для
00:17:41
введите настройку, просто введите эти параметры
00:17:44
настройка, давай попробуем первую, которую я
00:17:48
просто избавьтесь от первой настройки и
00:17:50
попробуйте ввести его еще раз внутри двойного слоя
00:17:53
введите цветовую тему, вы получите верстак
00:17:58
цветовая тема, нажмите Enter и вот мы имеем
00:18:02
список опций: выбрать «темный плюс по умолчанию»
00:18:06
это тема, которую мы будем использовать в этом
00:18:08
конечно, другие используют тот же метод
00:18:12
текстовый редактор. форматировщик по умолчанию в
00:18:15
preder DVS, поэтому мы используем
00:18:18
расширение, которое мы установили ранее для
00:18:22
форматирование нашего кода также позволяет форматировать
00:18:26
при сохранении, поэтому, когда вы нажимаете contrl s
00:18:29
автоматически ваш код будет сохранен
00:18:31
следующие две настройки сначала для красивее
00:18:35
удаляется точка с запятой в конце
00:18:38
команды и последний использует
00:18:42
одиночный код вместо двойного кода для
00:18:45
перенос строк с помощью этого параметра
00:18:47
наш код выглядит красивее и красивее
00:18:51
Professional для дополнительной настройки I
00:18:54
просто установите уровень масштабирования на четыре, чтобы сделать
00:18:57
шрифт больше, следующий удаляется
00:19:00
мини-карта справа тоже я
00:19:04
удали строку состояния внизу
00:19:06
vs code и следующие три настройки предназначены для
00:19:10
включите интеллектуальную фиксацию автоматической выборки и
00:19:13
подтвердите синхронизацию автоматически и последний
00:19:16
один из них — машинописный текст, который автоматически
00:19:20
обновить импорт при перемещении файла повсюду
00:19:24
папки, вот и все о коде vs
00:19:26
конфигурации сохраните этот файл и мы
00:19:29
готов начать разработку в этом направлении
00:19:35
Конечно, давайте начнем с создания следующего
00:19:39
откройте приложение vs code и перейдите к
00:19:44
терминал перейти к
00:19:48
рабочий стол, затем запустите эту команду, скопируйте это
00:19:53
и вставьте его сюда. npx создайте следующее приложение в
00:19:57
подпишите последний, затем нажмите Enter, введите
00:20:00
название проекта, которое я собираюсь установить
00:20:03
Далее- Amazona dv2, нажмите Enter, не могли бы вы?
00:20:09
хотел бы использовать машинописный текст, да, не могли бы вы
00:20:11
хотелось бы использовать ссылку es да Tailin CSS да
00:20:16
мы не собираемся использовать каталог SRC, нет
00:20:19
маршрутизатор приложения да, настройка значения по умолчанию
00:20:23
импортировать, увы, нет и подождать некоторое время, чтобы
00:20:26
установить все пакеты
00:20:29
вот и мы сделаем следующий шаг
00:20:31
откройте проект из меню «Файл» в
00:20:34
vs код открыть папку перейти на рабочий стол выбрать
00:20:38
следующая Amazona V2 и откройте ее здесь, у нас есть
00:20:42
папки проекта, и мы готовы
00:20:45
запустите его из терминала, нажмите «Новый»
00:20:47
терминал и запустите npm run def, затем нажмите
00:20:52
введите отличный открытый столбец локального хоста 3000
00:20:56
в твоем браузере я собираюсь
00:20:58
используйте Google Chrome и создайте это окно
00:21:01
бок о бок с таким кодом vs
00:21:05
следующий шаг — установка Daisy UI
00:21:09
это самая популярная библиотека компонентов
00:21:11
для хвостового компонента CSS, и мы собираемся использовать
00:21:14
все его прекрасные возможности для нашего
00:21:19
проект просто перейдите по этой ссылке и скопируйте это
00:21:23
затем в коде vs откройте новый
00:21:27
терминал p поместите команду npm install
00:21:30
DD в разделе зависимостей Dev пакета
00:21:34
Пользовательский интерфейс Json Daisy при последнем нажатии кнопки входа
00:21:38
и вот мы делаем следующий шаг, основанный на
00:21:42
как использовать, это добавить эту строку в
00:21:47
модуль. экспорт хвоста. конфигурация, но в
00:21:52
наш проект у нас открыт TS, а не JS
00:21:56
Tailwind do config .ts найти плагин
00:22:00
строку и замените ее на эту хорошую
00:22:04
Следующий шаг создайте папку компонентов в
00:22:08
корневая папка проекта, щелкните правой кнопкой мыши
00:22:10
здесь новые компоненты папки и внутри
00:22:15
компоненты создают папку заголовка, которую мы
00:22:17
собираюсь сформировать заголовок сайта и
00:22:21
внутри заголовка создать новый файл и установить его
00:22:24
в заголовок. TSX внутри этого Type R
00:22:30
Ace для создания функции реагирования Arrow
00:22:35
при экспорте сделать первую букву
00:22:37
капитал и экспортировать его сюда мы собираемся
00:22:40
чтобы разместить заголовок веб-сайта, сохраните его как
00:22:43
затем перейдите в каталог приложений и найдите
00:22:48
макет. TSX и внутри кузова создаем
00:22:53
div, подобный этому, устанавливает минимальное имя класса
00:22:57
высота экрана, сделайте эту улицу полной высоты
00:23:01
и установите для дисплея режим Flex и
00:23:04
направление будет столбцом
00:23:06
вертикально и переместите детей внутрь
00:23:10
это St нравится
00:23:13
затем используйте компонент заголовка, который
00:23:16
мы определили в папке компонентов
00:23:19
заголовок и нажмите Tab, чтобы импортировать его сюда
00:23:23
это адрес на знаке/компонентах
00:23:26
заголовок и заголовок, давайте добавим нижний колонтитул
00:23:29
после детей здесь будет
00:23:31
основное содержание нашего сайта у нас есть
00:23:34
заголовок, и нам нужен нижний колонтитул для
00:23:36
нижний колонтитул Я не собираюсь создавать новый
00:23:37
компоненты, потому что это просто
00:23:40
простой абзац, давайте создадим нижний колонтитул
00:23:43
как этот набор классов, названный в нижнем колонтитуле, это
00:23:46
класс из пользовательского интерфейса Daisy для формирования
00:23:48
красивый нижний колонтитул для нас, создай нижний колонтитул
00:23:51
по центру создайте отступы и установите
00:23:54
фоновый цвет до 30% упаковки
00:23:57
фон фон по умолчанию
00:23:59
базовый фон и установите цвет шрифта
00:24:04
для текстового базового содержимого внутри этого создания
00:24:07
абзац и поместите внутри авторские права
00:24:11
которые меняют название сайта на ваше
00:24:16
бренд и описание вроде этого дальше
00:24:19
шаг — создание группы дорог для
00:24:23
интерфейс веб-сайта электронной коммерции в
00:24:25
папка приложения создайте новую папку и
00:24:30
внутри пары
00:24:32
круглые скобки создают переднюю часть, поэтому это
00:24:36
часть веб-сайта, которую увидят клиенты
00:24:40
внутри этого переместите страницу. ТСХ внутри
00:24:44
вперед, переместите его и перейдите на страницу. ТСХ
00:24:49
и внутри передней группы щелкните правой кнопкой мыши и
00:24:52
создать новый файл, установить имя файла
00:24:56
макет
00:24:58
TSX для макета внутри передней папки
00:25:02
Я собираюсь скопировать макет из
00:25:05
папку приложения, вставьте ее сюда и избавьтесь от
00:25:09
Все импорты переименовывают корневой макет на передний план.
00:25:13
макет и избавиться от всех возвратов и
00:25:17
то, что я собираюсь вернуть, является главным
00:25:19
HTML-элемент внутри основного рендеринга
00:25:24
дети определяют класс для двоих основных
00:25:29
Flex увеличивает границу контейнера по горизонтали
00:25:32
Автоматически размещать материалы по центру и создавать
00:25:37
горизонтальное отступы, сохраните его, затем перейдите к
00:25:40
страница. TSX избавиться от всего контента в
00:25:45
вернитесь до конца вниз и создайте
00:25:48
фрагмент и переход к последним продуктам
00:25:52
установите имя класса в текст размером x и
00:25:56
создать вертикальное дополнение, избавиться от
00:25:59
изображение, и вот у нас есть заголовок
00:26:02
раздел последних продуктов и красивый
00:26:05
нижний колонтитул, давайте откроем заголовок
00:26:08
заголовок. TSX в заголовке компонентов
00:26:11
папку избавьтесь от Dev и замените ее
00:26:14
с заголовком внутри заголовка создать навигацию
00:26:18
элемент и внутри элемента навигации создают
00:26:22
Разработчику нравится это имя класса, заданное как Navar.
00:26:25
это класс из пользовательского интерфейса Daisy, используйте justify
00:26:28
bin, чтобы разместить бренд сайта слева
00:26:32
и меню заголовка справа и
00:26:35
измените цвет фона на базовый 300
00:26:39
внутри этого Dev создайте импорт ссылки
00:26:43
ссылка из следующей косой черты устанавливает
00:26:47
адрес на домашнюю страницу и для занятий
00:26:49
класс кнопки использования имени из пользовательского интерфейса Daisy
00:26:54
BTN Порыв BTN создать кнопку типа
00:26:58
это из пользовательского интерфейса Daisy, также сделайте шрифт
00:27:01
размер немного больше, используя текст Dash Large
00:27:06
сохраните код, ага, вот у нас есть бренд
00:27:10
ссылка Я собираюсь разместить два меню на
00:27:13
заголовок после ссылки создает класс набора UL
00:27:17
имя, которое нужно сгибать, чтобы положить что-нибудь рядом с каждым
00:27:20
другие внутри, которые создают Али и в
00:27:24
на Али создай ссылку для набора ссылок
00:27:28
HF SLC-карта, страница карты и установка
00:27:31
имя класса для BTN Gust и используйте округленное значение
00:27:35
кнопку, чтобы создать радиус вокруг
00:27:38
кнопка установить подпись к корзине и
00:27:42
продублируйте его для входа войдите в систему сохраните его
00:27:47
и вот у нас есть заголовок типа
00:27:50
это если тебе не нравятся заглавные буквы
00:27:53
формат кнопок просто перейдите к
00:27:57
жакетный бар. CSS и в самом конце добавьте
00:28:00
этот класс для BTN устанавливает преобразование текста в
00:28:05
нет, сохранив это, текст нормальный
00:28:09
отлично, в этом уроке мы создали заголовок
00:28:13
нижний колонтитул и раздел контента для размещения списка
00:28:16
продуктов здесь вот и все об этом
00:28:19
урок до следующего урока
00:28:25
пока, на этом уроке мы собираемся
00:28:28
опубликовать исходный код этого проекта
00:28:31
на GitHub, чтобы сделать это, нажмите «Версия»
00:28:35
Контроль
00:28:36
значок введите сообщение для первого коммита
00:28:40
его
00:28:41
о
00:28:43
01 создать следующее приложение
00:28:48
макет и нажмите «Comit», затем нажмите «Comit».
00:28:53
опубликовать ветку, здесь появляется всплывающее окно, и оно
00:28:57
говорит имя репозитория на gethub, если
00:29:02
у вас нет этого всплывающего окна, вам нужно
00:29:05
войдите в свою учетную запись GitHub, а затем вы
00:29:08
будет это
00:29:10
коробка, у тебя есть два варианта, которые я собираюсь сделать
00:29:13
сделать этот репозиторий общедоступным, поэтому я выбираю
00:29:17
второй
00:29:18
нужно подождать некоторое время, чтобы опубликовать на GitHub
00:29:22
и загружаем файлы и в конце вы
00:29:24
будет иметь кнопку открытия на gethub
00:29:29
открытие там, где мы есть, у нас есть доступ к
00:29:32
репозиторий GitHub этого
00:29:36
проект, давайте откроем эту ссылку в новом
00:29:39
Окно, вот и мы, у вас есть доступ к
00:29:42
репозиторий этого проекта по адресу
00:29:45
адрес для каждого видео я создам
00:29:49
новая Comet, чтобы вы могли получить доступ к каждому
00:29:51
Комета, идя к комете
00:29:54
раздел, затем откройте номер видео на основе
00:29:59
на моих уроках и тогда вы сможете сравнить
00:30:03
ваш код с моим, вот и все об этом
00:30:06
урок до следующего урока
00:30:12
пока, на этом уроке мы собираемся
00:30:15
список продуктов на главном экране, позвольте нам
00:30:19
начните с создания типа продукта в
00:30:23
корневая папка создать папку установить для нее значение
00:30:28
live все служебные файлы будут добавлены в
00:30:32
этот
00:30:34
папка внутри Li создайте папку для
00:30:38
модели и внутренняя модель создают продукт
00:30:43
Модель продукта.
00:30:46
TS, я собираюсь экспортировать тип продукта
00:30:50
вот тип продукта, который у нас есть
00:30:54
идентификатор продукта типа строковое имя
00:30:59
slug image Баннер все типа A String
00:31:04
цена типа
00:31:06
номер бренда строка описания строка
00:31:11
категория типа строки, и у нас есть
00:31:13
рейтинг, количество просмотров и запас контента
00:31:16
номер типа, также у нас есть цвета продукта
00:31:20
и
00:31:22
размеры массива типов, но они
00:31:26
необязательный
00:31:27
хорошо, пойдем дальше
00:31:30
шаг перейти к
00:31:33
компоненты и создайте папку внутри
00:31:36
компоненты установили его в
00:31:39
продукты и внутри, которые создают
00:31:42
это первый компонент, связанный с продуктом
00:31:46
товар, для которого мы используем этот компонент
00:31:49
показать товар дома
00:31:52
экранный элемент Pyon.
00:31:55
TSX, я собираюсь визуализировать продукт
00:31:58
элемент, давайте напечатаем
00:32:01
RFC для создания функционала реагирования
00:32:05
компонент и как
00:32:08
параметр для этого
00:32:11
компонент, у нас есть продукт, и он
00:32:15
введите продукт в модели продукта
00:32:19
импортировать тип продукта из моделей
00:32:23
папка для разработчика установила имя класса на
00:32:27
карточка, это класс из изменения пользовательского интерфейса Daisy
00:32:31
цвет фона создает тень и
00:32:35
установить кнопку поля на
00:32:38
через четыре после создания Dev пришло время
00:32:42
создать изображение продукта, я использую рисунок
00:32:47
элемент рисунок HTML-элемент и внутри
00:32:53
которые создают ссылку, установленную hre на SL
00:32:58
продукт/продукт
00:33:00
ссылка на импорт слага из следующего SL
00:33:04
ссылку, затем поместите изображение внутри ссылки
00:33:08
импортируйте его из следующего набора изображений SL в SRC
00:33:14
продукт. альтернативный текст изображения
00:33:16
продукт. имя устанавливает высоту и ширину
00:33:20
300 пикселей и используйте имя этого класса
00:33:23
обложка объекта, чтобы соответствовать изображению внутри Dev
00:33:29
установите высоту на 16 Ram, используя
00:33:33
h64 и сразу после этого сделайте его на всю ширину
00:33:38
фигура, создающая еще один класс Dev Set Card
00:33:42
имя в тело карты, чтобы создать отступ
00:33:45
внутри карточки, затем Определите ссылку
00:33:50
набор компонентов href для продукта
00:33:54
URL-адрес и внутри него поместите класс набора H2.
00:33:59
имя к названию карты и измените шрифт
00:34:04
вес до нормального рядом со ссылкой создайте
00:34:08
второй абзац, кнопка создания поля и
00:34:12
установите его на продукт.
00:34:15
бренд в самом конце я собираюсь
00:34:18
создайте другое имя класса набора разработчиков для
00:34:22
действие с корзиной, это будет нижний колонтитул
00:34:24
тележки, сделай ее гибкой
00:34:27
Центрировать элемент и выровнять между внутренними
00:34:31
которые создают
00:34:34
протянуть и сделать шрифт
00:34:37
размер в текст - в XL, чтобы сделать продукт
00:34:43
цена
00:34:45
большой и поставь перед ним знак доллара
00:34:49
круто, пора
00:34:51
создать образец данных внутри живой папки
00:34:57
щелкните правой кнопкой мыши новые данные файла. ТС, мы
00:35:02
собираюсь использовать статические данные, но позже
00:35:05
в этом курсе мы будем использовать mongodb в качестве
00:35:09
база данных Определить данные как
00:35:12
объект и экспорт данных theault, что я
00:35:16
здесь я собираюсь сделать это создать
00:35:20
продукт как файл данных и установите для него значение
00:35:25
массив
00:35:27
из
00:35:29
объекты первый объект первый
00:35:32
продукт, поэтому мне нужно указать поля продукта
00:35:35
вот это
00:35:37
изображение категории ярлыка названия продукта и
00:35:41
другая информация о
00:35:45
продукт будет определен
00:35:48
здесь вы можете сделать это, вы можете дублировать
00:35:52
это и делайте столько, сколько захотите, и
00:35:55
измените значения здесь, я собираюсь
00:35:57
определите второй продукт, используя это
00:36:02
информация Фейт
00:36:04
рубашка давай возьмем третью
00:36:08
один тонкий
00:36:10
рубашка четвертый гольф
00:36:14
брюки
00:36:16
пятый фут
00:36:18
брюки и последний — классические брюки
00:36:22
круто, мне нужно
00:36:25
создайте папку с изображениями в публичном доступе и
00:36:28
размещать изображения с
00:36:32
назовите и поместите несколько изображений с ними
00:36:38
имена идут в
00:36:40
публика
00:36:42
папка щелкните правой кнопкой мыши новую папку изображения вы
00:36:47
можно загружать изображения из Интернета
00:36:50
имя Шар один Баннер один доля 2
00:36:54
И т. д. и поместите их в изображения.
00:36:57
но если вы хотите использовать мои изображения, вы можете
00:37:00
зайди в репозиторий по ссылке
00:37:02
описание, затем перейдите в общую папку
00:37:07
папку с изображениями и загрузите их, затем поместите
00:37:11
вставь их сюда, я просто вставлю
00:37:15
изображения вот изображения
00:37:19
и у нас есть три штана, три рубашки и
00:37:23
два
00:37:24
баннеры хорошо, давайте перейдем к следующему шагу
00:37:27
страница. TSX перейти на страницу. TXS в приложении
00:37:34
спереди и справа после заголовка два создайте
00:37:37
разработчик установил имя класса на Greed и что
00:37:41
Я собираюсь сделать здесь, чтобы разместить продукт
00:37:43
миниатюры рядом друг с другом для среднего размера
00:37:48
устройство использует сетку, звонит три, так что я пойду
00:37:51
иметь три продукта подряд, но для
00:37:55
экран большего размера у нас будет четыре продукта
00:37:59
подряд для мобильных устройств с маленьким экраном
00:38:04
у нас тоже есть один товар подряд
00:38:07
Разрыв до четырех, чтобы создать разрыв между
00:38:10
продукт
00:38:12
миниатюры внутри, в которых используются импортированные данные
00:38:16
от Ли
00:38:18
/данные делают
00:38:20
точечную карту продуктов и конвертируйте каждую
00:38:25
продукт
00:38:30
к продукту
00:38:33
позиция продукта позиция из компонента SL
00:38:37
импорт папки с продуктами
00:38:41
вот и все, что нам нужно установить набор ключей
00:38:45
ключ к товару. Вытяните и установите продукт на
00:38:49
продукт из папки продуктов, сохраните его
00:38:54
здесь мы получаем эту ошибку, в которой говорится
00:38:56
Идентификатор свойства отсутствует, перейдите к продукту
00:38:59
модель поставила вопросительный знак Сделай это
00:39:05
необязательно и сделайте баннер необязательным
00:39:09
тоже, тогда иди
00:39:13
вернуться на страницу. TXS и нет ESL
00:39:18
введите ошибку сценария вот вы и мы
00:39:21
иметь
00:39:23
список продуктов на главном экране, например
00:39:26
это на самом большом экране будет
00:39:29
быть похожим на эти четыре продукта в
00:39:32
отлично, мы успешно реализовали
00:39:36
список продуктов в этом уроке данные
00:39:40
исходя из статического data.js
00:39:43
файл, но мы сделаем динамический, используя
00:39:46
mongodb позже в этом
00:39:48
конечно, это все об этом уроке, пока
00:39:51
следующий урок
00:39:55
пока-пока
00:39:57
в этом уроке я собираюсь создать
00:39:59
Страница сведений о продукте: первый шаг
00:40:03
создание файла подкачки внутри приложения
00:40:08
щелкните правой кнопкой мыши, чтобы создать папку для продукта
00:40:12
поэтому конечный URL страницы будет
00:40:14
Продукт SL/часть продукта после
00:40:19
создание папки продукта внутри нее
00:40:21
создайте новую папку, но на этот раз оберните
00:40:24
это внутри ES
00:40:27
скобка, внутри должна быть завернута заготовка
00:40:30
квадратная скобка, поэтому слизень - это
00:40:33
параметр, который будет передан в
00:40:36
файл на страницу.
00:40:38
TSX, поэтому создайте новый файл набора файлов.
00:40:42
имя на страницу.
00:40:44
TSX и вот пришло время определиться с реакцией
00:40:48
функциональный
00:40:50
тип компонента RFC и нажмите Tab, чтобы
00:40:53
создавать
00:40:54
нам не нужна реакция импорта здесь из
00:40:59
функция страницы переименовывает ее в продукт
00:41:02
детали и внутри этого Определите
00:41:06
параметр и как параметр Определить параметры
00:41:10
внутри скобки Cur давайте определим тип
00:41:13
параметра, как объект, имеющий параметры
00:41:19
внутри него и
00:41:21
params состоит из пули типа a
00:41:25
нить
00:41:28
Следующий шаг — получение продукта от
00:41:31
данные.
00:41:33
продукты минус продукт равен данным
00:41:37
импортировано из живого
00:41:39
папка
00:41:40
продукты вызывают функцию поиска по продуктам
00:41:45
массив и поиск пули внутри элементов
00:41:51
в массиве продуктов сравните их с
00:41:55
парсы делают
00:41:59
замок, сохрани
00:42:01
код, давайте создадим условие if if
00:42:05
продукт не
00:42:07
существует рендеринг разработчика, чтобы показать продукт не
00:42:12
обнаружено иное, визуализируйте продукт
00:42:16
создать пустой
00:42:17
контейнер внутри этого места — набор разработчиков
00:42:22
отступ по вертикали к нему и внутри него
00:42:26
создать ссылку, импортированную из Nexus SL
00:42:29
связать и перенаправить пользователя на домашнюю страницу
00:42:33
заголовок ссылки вернется
00:42:35
к
00:42:36
продукты следующим шагом является создание
00:42:40
столбцы, давайте определим
00:42:44
Разработчик установил имя класса на Жадность
00:42:48
для
00:42:50
средние экраны, я собираюсь определить четыре
00:42:54
столбцы и
00:42:56
такой разрыв между столбцами
00:43:01
Первый столбец будет для изображения, поэтому
00:43:05
создать имя класса набора div для среды
00:43:09
промежуток экрана два из четырех
00:43:14
столбцы и в этом div создайте изображение
00:43:18
импортировать изображение из ширины набора изображений Nex SL
00:43:22
и высота и источник альтернатива
00:43:25
текст
00:43:27
также я собираюсь установить этот стиль на
00:43:30
ширину 100% и высоту сделайте Auto и установите
00:43:35
размеры до 100 видового экрана, имея
00:43:42
эти классы изображение расширится до
00:43:47
родитель
00:43:49
компонент, перейдем к следующему
00:43:52
Разработчик сразу после изображения. Разработчик создает другой.
00:43:56
div для продукта
00:43:59
информация для этой цели
00:44:02
создайте ul и определите пространство
00:44:07
горизонтально, чтобы
00:44:10
четыре внутри, которые создают первый список
00:44:15
предмет типа
00:44:18
это я собираюсь показать продукт
00:44:22
имя, давайте нажмем на продукт, чтобы увидеть
00:44:25
то, что мы уже сделали, потрясающе, здесь мы
00:44:28
вернусь к товару, когда нажму на него
00:44:30
это работает, когда я нажимаю на продукт, который могу
00:44:33
посмотреть товар, перейдем на домашнюю страницу
00:44:35
выбрать другой продукт пока у меня есть
00:44:39
продукт у меня есть название продукта, пойдем
00:44:43
следующий
00:44:44
шаг, мы можем проверить это в большем
00:44:48
экран, это будет такая половина
00:44:51
ширины изображения составляет четверть
00:44:57
для получения информации о продукте и других
00:45:01
доля экрана будет предназначена для
00:45:04
действие продукта, чтобы добавить продукт в
00:45:07
открытка, пойдем дальше
00:45:10
Ли, здесь я покажу рейтинг
00:45:13
не обзор
00:45:15
обзоры, следующий элемент списка относится к продукту
00:45:20
бренд
00:45:22
Затем Adidas создает разделитель, используя Li.
00:45:27
и создал имя класса набора Dev для
00:45:30
разделитель для создания пространства между товарами
00:45:33
информация и продукт
00:45:35
описание после разделителя создайте
00:45:39
последний элемент списка внутри этого элемента
00:45:43
описание и в абзаце рендеринг
00:45:46
описание продукта сохраните код, чтобы получить
00:45:49
результат такой потрясающий, мы такие
00:45:52
готов к
00:45:54
последний делитель
00:45:56
это действие по товару, добавление товара
00:45:59
в корзину, и что я буду здесь делать
00:46:03
состоит в том, чтобы создать карту, используя набор
00:46:07
цвет фона по базе BG от 300 до
00:46:12
отличать тележку от
00:46:14
фон и создайте
00:46:17
тень вокруг
00:46:20
корзина внутри Dev создать еще один набор Dev
00:46:24
имя класса в тело карты для заполнения
00:46:27
вокруг
00:46:30
карту и идите к первой колонне
00:46:34
карта здесь первая
00:46:37
Столбец создает кнопку поля установки разработчика
00:46:41
два набора гибких дисплеев и использование
00:46:45
немного оправдать, я собираюсь создать таблицу
00:46:48
вид искусства это
00:46:51
строка слева у меня есть цена и в
00:46:55
правая сторона у меня есть значение цены
00:47:00
нравиться
00:47:01
для этого будет следующая строка
00:47:05
статус продукта, как в предыдущем наборе строк
00:47:10
Кнопка поля. Гибкое выравнивание между
00:47:13
первый Dev показывает статус, а второй Dev
00:47:16
проверьте наличие товара на складе, если
00:47:19
это больше нуля, покажите на складе
00:47:22
в противном случае показать недоступность, сохраните код
00:47:25
чтобы получить такой результат, давайте двигаться
00:47:30
его внутри корпуса карты, чтобы придать ему форму
00:47:36
это также я могу установить верхний край на
00:47:42
три, но для среднего устройства сделайте его нулевым
00:47:47
Сохраните код, ах, гораздо лучше в большем размере
00:47:51
экран, это будет вот так
00:47:53
карточка и на меньшем экране у нас есть
00:47:56
пространство между описанием и карточкой
00:48:00
как
00:48:01
последний раздел, который я собираюсь показать, добавить в корзину
00:48:05
кнопка создать
00:48:07
Разработчик установил имя класса для действия корзины на
00:48:11
оформите нижний колонтитул карточки и обоснуйте
00:48:14
Центр, чтобы поместить кнопку в центр
00:48:17
принадлежащий
00:48:20
карту, затем создайте
00:48:23
кнопка, подобная этой, устанавливает имя класса в BTN
00:48:27
BTN основной и сделайте его на всю ширину
00:48:31
тип – это кнопка, а заголовок добавляется к
00:48:34
корзина товара мы успешно создали
00:48:38
Экран сведений о продукте на большом экране
00:48:43
у нас вот так и поменьше
00:48:45
экран, он полностью
00:48:48
такой отзывчивый, вот и все
00:48:52
этот урок до следующего урока
00:48:54
пока-пока
00:48:57
[Музыка]
00:48:58
в этом уроке я собираюсь реализовать
00:49:01
добавить функциональность карты в
00:49:03
сайт электронной коммерции, давайте начнем с
00:49:06
создание утилиты
00:49:08
функция с именем round two для преобразования
00:49:12
числа с точностью до двух десятичных знаков ложь
00:49:16
папку и создайте
00:49:19
.ts здесь, внутри этого файла. Определите раунд.
00:49:24
две функции доступа
00:49:26
n номера типа и используйте math.round для
00:49:30
преобразовать число в две десятичные точки
00:49:33
мы используем его для округления цен в
00:49:37
Корзина, второй шаг — создание заказа
00:49:42
Типы предметов перейдите к моделям лжи, щелкните правой кнопкой мыши
00:49:46
новая модель порядка файлов. ТС в этом файле
00:49:51
создайте тип с именем позиции заказа и
00:49:54
Определите следующее имя свойства
00:49:58
Количество товаров в корзине
00:50:03
Цена продукта, цвет и размер, которые мы используем
00:50:07
цвет и размер для следующего урока
00:50:11
название слота количество изображение и цена
00:50:13
достаточно в этом уроке, сохраните его и продолжайте
00:50:17
следующий шаг на этом этапе мы собираемся
00:50:19
установить zustand zustand — это состояние
00:50:24
менеджер на основе хуков ему не нужен
00:50:27
любая котельная плита и она проста в использовании
00:50:32
просто откройте новый терминал установки npm
00:50:36
занд
00:50:37
затем перейдите к следующему шагу и создайте использование
00:50:41
крючок для хранения карточек в живой папке
00:50:45
создайте новую папку для хуков, потому что
00:50:48
zand — это база-крючок, я собираюсь создать
00:50:51
новый крючок и создайте новый файл набора файлов
00:50:54
имя для использования корзины магазина. ТС, начнем
00:50:58
импортировав создать из zustand round
00:51:02
два из утилит и заказ товара из заказа
00:51:06
Следующим шагом модели является определение типа карты.
00:51:11
имеет элементы типа массив элементов заказа и
00:51:15
цены на товары, налог на доставку и общая сумма
00:51:20
после создания типа карты пришло время
00:51:23
создать новый экземпляр этого типа
00:51:26
это начальное состояние типа тележка и
00:51:30
здесь установите значения по умолчанию для элементов
00:51:33
это налог на цену пустого массива
00:51:36
цена цена доставки и общая стоимость
00:51:39
они равны нулю, тогда экспортируйте константное хранилище C
00:51:44
и установите для него возвращаемое значение create
00:51:47
функция со стенда Z и в качестве параметра
00:51:52
чтобы создать функцию, передайте стрелку
00:51:55
функция функция, которая ничего не принимает
00:51:57
и вернуть исходное состояние последнего шага
00:52:01
вот
00:52:02
определение сервисного крючка использования карты и
00:52:06
Экспортировать данные
00:52:08
дисфункция внутри извлекаемых предметов
00:52:12
и цены из магазина C, как мы определили
00:52:17
выше здесь сохраните его в конце, нам нужно
00:52:22
возврат товара цена товара цена налога
00:52:25
доставка и общая стоимость также возвращают
00:52:30
функция с именем увеличения, мы используем это
00:52:33
функция добавления или увеличения элемента в
00:52:36
корзина принимает товары типа заказа
00:52:40
элемент, и внутри него мы собираемся
00:52:43
обновить товары в карточке и цены
00:52:47
чтобы сделать это, сначала найдите предметы
00:52:52
в параметре функции внутри
00:52:55
массив элементов на основе слота и put
00:52:59
это внутри существующей переменной, а затем на основе
00:53:04
существующее значение вычисляет обновленную карту
00:53:09
предметы, если предмет, который мы собираемся
00:53:12
добавить в карту уже есть в
00:53:15
Массив элементов использует функцию карты для элемента
00:53:20
чтобы найти этот элемент в массиве и выше
00:53:25
указать или увеличить количество этого
00:53:29
товар в корзине, в противном случае оставьте его как есть
00:53:33
если существование равно нулю, это означает, что
00:53:37
это новый элемент, и нам нужно добавить его в
00:53:40
в корзине используется синтаксис объединения массивов
00:53:45
чтобы добавить новый элемент, используйте конструкцию или D
00:53:49
структурировать свойства элемента и набора
00:53:54
Количество QT этого товара на карте до
00:53:57
один, потому что мы впервые
00:54:00
добавление этого товара в корзину
00:54:04
Следующим шагом является расчет цены на основе
00:54:08
обновленный элемент корзины, давайте определим это
00:54:12
функция вне обслуживания карты использования
00:54:15
крючок вот расчет цены
00:54:18
функция, которая принимает элементы как массив
00:54:22
предметы заказывают предмет, затем он использует второй раунд
00:54:27
преобразовать число в две десятичные точки
00:54:31
внутри этого мы используем функцию уменьшения и
00:54:34
массив товаров и суммирование цен на товары
00:54:39
умножить количество товаров в следующей строке, мы
00:54:45
рассчитать стоимость доставки на основе товаров
00:54:48
цена, если она больше 100 баксов
00:54:51
бесплатная доставка в противном случае доставка
00:54:54
цена 100, вы можете добавить свою логику
00:54:58
здесь вы также можете изменить эту логику на основе
00:55:01
на ваше
00:55:02
предпочтение для расчета налоговой цены
00:55:05
Я использую налог в размере 15 %, вы можете это сделать.
00:55:09
Динамический тоже, и за общую стоимость просто сумма
00:55:14
вверх по всем трем ценам, которые мы рассчитали выше
00:55:19
и для получения общей стоимости просто просуммируйте товары
00:55:23
цена цена доставки и цена налога на
00:55:26
конец вернет их как объект, который мы
00:55:30
извлеките результат расчета цены здесь, так что
00:55:34
на данный момент у нас есть обновленные элементы
00:55:36
цена и другие цены, давайте перейдем к следующему
00:55:40
Шаг увеличения функции использования карты
00:55:44
сервисный перехват, последний шаг - вызов
00:55:48
установите состояние в магазине корзины и обновите
00:55:53
товары и цены основаны на обновленной
00:55:58
значения сохраняют код, и вот использование
00:56:03
перехватчик обслуживания карт, перейдем к следующему шагу
00:56:07
он создает новый компонент внутри
00:56:10
компоненты продукты SL переходят в компоненты
00:56:14
перейдите к продуктам, щелкните правой кнопкой мыши новый файл по адресу
00:56:19
карта. TSX — это клиентский компонент
00:56:23
нам нужно определить нас
00:56:25
клиент в самой первой строке этого
00:56:29
компонент, затем импортируйте услугу использования карты
00:56:33
элементы заказа используют эффект использования маршрутизатора и
00:56:38
используйте такое состояние, затем экспортируйте и добавьте в
00:56:42
функция карты, это компонент реагирования
00:56:46
которые принимают предметы в качестве реквизита, поэтому определите
00:56:51
тип реквизита здесь и внутри этого
00:56:54
функцию, и мы собираемся визуализировать
00:56:57
кнопка для добавления в корзину, сначала получите
00:57:01
маршрутизатор от использования маршрутизатора, потому что мы хотим
00:57:03
перенаправить пользователя после добавления элемента в
00:57:07
страница «Корзина в корзину» для получения товаров и
00:57:12
функция увеличения от использования услуги карты
00:57:15
перехватите и определите существование
00:57:18
Товар как указано, это либо товар заказа, либо
00:57:24
на
00:57:25
по умолчанию оно неопределенно, затем определено
00:57:29
используйте такой эффект внутри этого набора
00:57:34
существует элемент на основе массива элементов, если
00:57:40
у нас есть этот продукт в наборе карточек
00:57:44
этот элемент существует элемент последний
00:57:47
функция в этом компоненте добавляется к
00:57:50
Обработчик карточек, давайте поместим место
00:57:54
между ними только что обработчик карты
00:57:58
вызов
00:57:59
функция увеличения от использования услуги карты
00:58:03
зацепить и передать предмет с at на карту
00:58:08
Реквизит компонента, приступим к рендерингу
00:58:11
этого компонента с использованием возврата и проверки
00:58:16
существующий элемент, если существующий элемент существует, мы
00:58:20
нужно показать минус плюс и
00:58:25
количество, но если у нас нет этого товара
00:58:29
в корзине нам нужно показать добавить
00:58:31
Кнопка в корзину для первого условия
00:58:34
Я собираюсь визуализировать div и для
00:58:37
иначе условие я собираюсь визуализировать
00:58:39
кнопка для кнопки, для которой задано имя класса
00:58:42
BTN BTN первично и установите мы на полную мощность
00:58:48
установите тип кнопки и отмените щелчок
00:58:51
позвонить добавить в карточку Обработчик подпись такая
00:58:54
добавить в корзину, давайте выберем существующий товар
00:58:59
В данном случае я собираюсь отобразить кнопку
00:59:02
это кнопка минус, я не собираюсь
00:59:04
реализовать для него функцию разблокировки
00:59:08
мы реализуем это в следующем
00:59:11
урок, затем Определите диапазон, чтобы показать
00:59:15
количество текущего товара в
00:59:18
карточка и кнопка рендеринга плюс для увеличения
00:59:22
количество этого товара в корзине по
00:59:25
вызов функции увеличения и передача
00:59:28
существует элемент в качестве параметра этой функции
00:59:33
отлично, давайте воспользуемся добавлением в корзину, переходом на страницу.
00:59:37
TSX найти кнопку «Добавить в корзину» и избавиться
00:59:41
контейнера div замените его на
00:59:45
это jsx
00:59:47
выражение, если запасы конусов не равны
00:59:50
до нуля, это означает, что у нас есть это
00:59:52
товар в наличии, поэтому отобразите его
00:59:56
выражение создает div внутри этого использования
01:00:00
добавить в корзину компонент, импортированный из
01:00:06
папку продуктов и передайте элемент, например
01:00:11
это структура структура
01:00:14
продукт и установите количество на ноль цвета
01:00:19
и размер для очистки строки, мы исправим
01:00:23
это в следующих уроках сохраните код
01:00:27
и вот мы добавили на карту
01:00:29
кнопка, но на этот раз, если я нажму на нее
01:00:33
аха, там показано один, минус и плюс
01:00:37
рядом с номером товара в карточке I
01:00:41
могу увеличить его вот так, чтобы у меня было шесть
01:00:44
этого продукта на карточке, если я нажму
01:00:47
на минус не работает, реализуем
01:00:49
на следующем уроке пока что мы сделали
01:00:53
стоит реализовать и добавить в корзину
01:00:56
функциональность, давайте покажем это значение здесь
01:00:59
в корзине в качестве значка вернитесь к
01:01:03
урок и определить компонент меню, например
01:01:07
этот внутренний заголовок переходит к компоненту
01:01:10
заголовок щелкните правой кнопкой мыши меню нового файла. ТСХ
01:01:16
это клиентский компонент, использующий клиент
01:01:20
импортировать ссылку на службу использования карт и пользователя
01:01:25
Состояние и эффект использования от реакции Определить
01:01:28
меню как функцию стрелки и экспортировать его
01:01:32
внутри которого можно получить предметы с карты использования
01:01:35
сервис, мы собираемся показать количество
01:01:37
элементы на карте и использовать состояние и
01:01:40
хук эффекта, подобный этому. Определить установленный
01:01:44
Состояние и эффект использования устанавливают
01:01:47
значение mount равно true, мы используем это
01:01:49
трюк, чтобы избавиться от ошибки на сервере и
01:01:53
проблемы с рендерингом на стороне клиента в конце
01:01:58
вернуть Dev внутри этого визуализированного Dev
01:02:03
ul и установите имя класса для гибких элементов
01:02:07
растяни первую ли, это будет
01:02:12
ссылка, буква H этой ссылки — страница карточки.
01:02:16
мы реализуем эту страницу позже, заголовок
01:02:19
по этой ссылке есть карточка, и здесь у меня есть
01:02:22
проверьте, установлено ли это, это означает, что если я
01:02:26
на клиентском сайте и номер элемента в
01:02:30
тележка больше нуля, это значит
01:02:33
что у меня есть хотя бы один элемент в
01:02:35
card, затем отобразите имя класса набора разработчиков в
01:02:39
значок значок второстепенный, чтобы сделать его похожим на
01:02:42
красный цвет и используйте функцию уменьшения на
01:02:46
предметы для подсчета количества некоторых из
01:02:50
количества в корзине, сохраните
01:02:54
а затем визуализировать второй элемент списка
01:02:58
вот так это просто кнопка входа в систему
01:03:01
используйте компонент меню, перейдите в заголовок
01:03:05
компонент избавьтесь от UL здесь и замените
01:03:10
это с
01:03:12
компонент меню, импортированный таким образом, сохраните
01:03:16
код и вот у нас есть семь
01:03:19
товар в карточке и если я увеличу
01:03:22
это шоу показывает количество элементов в
01:03:26
карта в пакете, перейдем на домашнюю страницу
01:03:29
выберите другой продукт, добавьте элемент в
01:03:32
карточка и, как вы видите, она показывает сумму
01:03:36
количество всех позиций заказа в
01:03:40
открытка отличная, вот и все об этом уроке
01:03:44
мы успешно реализовали добавление на карту
01:03:47
функционал и на следующем уроке мы
01:03:49
улучшить это
01:03:53
особенность
01:03:55
в этом уроке мы собираемся реализовать
01:03:57
удалить товар из корзины в предыдущем
01:04:01
урок, который мы реализовали, добавил элемент в
01:04:03
карту, и здесь мы собираемся реализовать
01:04:05
кнопка минус здесь, когда я нажимаю на нее
01:04:08
Я собираюсь уменьшить количество этого
01:04:11
товар в карточке, чтобы сделать то, что нам нужно
01:04:14
добавить новую функцию в карту использования
01:04:17
сервисный крючок перейти к использованию сервисного крючка карты
01:04:21
прокрутите вниз, чтобы найти конец увеличения
01:04:25
функция прямо здесь и определите уменьшение
01:04:29
например, увеличить, принять товар как
01:04:32
параметр в теле этой функции
01:04:35
найди предмет по слизню и поставь
01:04:40
оно существует постоянно, если оно не существует
01:04:45
вернуть это означает, что нет необходимости
01:04:47
изменить состояние, иначе рассчитать
01:04:51
обновлять элементы карты на основе
01:04:54
существующий товар, если количество существующего товара
01:04:59
нам нужно удалить этот элемент из
01:05:03
тележку, иначе мы уменьшим
01:05:06
количество этого товара в корзине
01:05:09
отдых очень похож на увеличение здесь я
01:05:13
просто позвоните в Calc Price, чтобы рассчитать цену
01:05:17
обновленные цены и в конце обновите
01:05:22
состояние на основе новых значений следующий шаг
01:05:27
находится в добавлении в корзину. TXS и получить снижение
01:05:32
функция из сервисного крючка использования карты
01:05:37
используйте его в кнопке минус для отмены уничтожения
01:05:42
Обработчик вроде этого, сохраним код, давайте
01:05:45
проверить результат добавить в
01:05:48
карта
01:05:50
увеличиваться и уменьшаться, если мы проверим
01:05:54
заголовок, он обновляется на основе
01:05:59
изменить здесь, когда я уменьшу, когда
01:06:02
количество одно, товар будет удален
01:06:05
из корзины и я добавил в корзину
01:06:08
кнопка классно мы
01:06:11
реализован пункт уменьшения из
01:06:13
Покупка
01:06:14
тележку и на следующем уроке мы отправимся за
01:06:18
Проектирование тележки
01:06:23
страница
01:06:24
в этом уроке мы собираемся создать
01:06:26
карта
01:06:28
страница, прежде чем перейти к странице карточки, давайте
01:06:33
сохранять
01:06:34
товары в корзине в
01:06:37
локальное хранилище, мы используем функцию persist
01:06:40
из середины zustand перейдите на C
01:06:45
магазин в самом
01:06:48
начало и импорт сохраняются с
01:06:51
затем установите промежуточное программное обеспечение SL
01:06:54
найдите функцию создания из zustan и
01:06:59
замени это на это
01:07:02
версия здесь у нас есть функция создания как
01:07:05
параметр, который мы передаем функции persist и
01:07:09
мы называем
01:07:11
сохранить два параметра: первый
01:07:14
параметры — это начальное состояние в виде стрелки
01:07:17
функция, а вторая
01:07:20
параметры в опции, которую мы установили для имени
01:07:24
магазин корзин, так что внутри локального хранилища
01:07:27
имя ключа будет «Сохранить в магазине корзины»
01:07:33
тот
01:07:34
код и давайте проверим результат, вот я
01:07:37
собираюсь добавить товар на карту и
01:07:41
обновите страницу по мере необходимости
01:07:44
см., что он сохраняется в локальном хранилище
01:07:49
и обновив страницу не пропустим
01:07:53
это элементы в
01:07:55
тележка, пойдем за
01:07:59
создание страницы корзины перейти в приложения
01:08:03
вперед и щелкните правой кнопкой мыши новую папку
01:08:08
корзина внутри карты создает новую страницу файла.
01:08:14
TSX и тип R A
01:08:19
fce это означает функцию реагирования на ошибку
01:08:23
с компонентом EXP Port и нажмите
01:08:26
Tab и задайте имя
01:08:29
картировать
01:08:31
скопируйте и вставьте страницу, поэтому, если я нажму
01:08:36
карточка, я буду перенаправлен на эту
01:08:41
Следующий шаг компонента — создание корзины
01:08:44
Компонент сведений внутри папки карты
01:08:48
в папку с карточками вправо
01:08:51
нажмите новый файл
01:08:54
Детали карты.
01:08:56
TSX причина, по которой я использую карту
01:09:00
Компонент сведений создает карту
01:09:05
серверная часть страниц и вся клиентская часть
01:09:09
часть будет добавлена ​​к реквизитам карты
01:09:14
поэтому мне нужно настроить использование
01:09:17
клиент в самом начале этого
01:09:20
компонент, затем экспортируйте данные карты
01:09:24
функция экспорта данных карты по умолчанию
01:09:28
функция, это основной компонент, получите
01:09:31
маршрутизатор импортирован из следующего SL
01:09:35
маршрутизатор, затем получите цену товара
01:09:39
уменьшение и увеличение функции от использования
01:09:41
карта
01:09:42
услуга импортирована из магазина карточек использования
01:09:45
следующий шаг — убедиться, что
01:09:50
этот компонент отображается только в клиенте
01:09:55
Сторона, используя эту часть кода, что я
01:09:59
здесь делается определение определения штата с именем
01:10:04
установлен и в эффекте использования установлен
01:10:07
смонтированное значение от false до true, и если
01:10:12
это ложь, возвращает пустое значение, имея
01:10:16
в этом трюке я не получу ни одной ошибки
01:10:22
сравнение рендеринга на стороне сервера с клиентом
01:10:27
сторона
01:10:28
визуализировать импорт пользователя
01:10:32
Состояние и использование
01:10:34
эффект на данный момент я собираюсь придать форму
01:10:38
данные карты
01:10:40
компонент создать пустой
01:10:44
контейнер и внутри него Определить
01:10:48
корзина как
01:10:50
это установило стиль p, добавляющий вертикально к
01:10:54
четыре и текст в 2 раза больше в The Next
01:10:59
Шаг. Я использую условный рендеринг, если
01:11:03
элемент. длина равна нулю показать корзину
01:11:08
пусто в Dev
01:11:11
и оказать
01:11:14
ссылка на
01:11:16
Домашняя страница с надписью «Иди за покупками»
01:11:20
в противном случае создайте Dev, закройте отверстие
01:11:24
скобка Quy сохраните
01:11:27
ссылка на импорт кода из косой черты Nex и
01:11:32
на этом этапе я использую
01:11:35
сетка для разделения экрана на четыре
01:11:41
столбцы и определите пять промежутков между ними
01:11:46
в
01:11:48
средний экран
01:11:50
и большие экраны
01:11:54
внутри этого разработчика создайте еще одного разработчика
01:11:57
Дев
01:11:59
занимают три доли Форера
01:12:02
экран, и я использую более чем полный X Auto
01:12:06
потому что я собираюсь создать здесь таблицу
01:12:09
показать корзину Определить набор столов
01:12:12
имя класса в таблице создать заголовок таблицы
01:12:16
и строка таблицы с тремя столбцами
01:12:22
положить товар в корзину
01:12:26
количество данного товара и цена
01:12:28
тот
01:12:30
продукт внутри этого
01:12:33
стол формы Т
01:12:36
body закройте его, сохраните код в формате
01:12:40
это и внутри него я собираюсь отрендерить
01:12:43
товары в корзине для этого Определить
01:12:48
предметы и функция карты вызова для предмета
01:12:51
чтобы преобразовать каждый элемент в items в
01:12:55
строка таблицы устанавливает ключевой атрибут элемента.
01:13:01
стараться сделать каждую строку
01:13:05
уникальный первый столбец — это элемент создания
01:13:09
набор ссылок h/продукт SL номер продукта
01:13:14
установить имя класса, чтобы сгибать элементы по центру
01:13:18
поместите предмет в центр и внутрь
01:13:21
ссылка создать изображение
01:13:24
импортировать изображение из следующего набора изображений SL
01:13:28
источник к элементу. альтернативный текст изображения
01:13:32
к пункту. имя и установка ширины и высоты
01:13:35
до 50
01:13:37
пиксель рядом с изображением. Определите диапазон и
01:13:41
показать название предмета, его цвет и размер
01:13:45
потому что я не реализовал цвет элемента
01:13:48
и размер, я собираюсь избавиться от него и
01:13:50
на следующих уроках мы реализуем размер и
01:13:53
цвет цвет для сохранения товаров в корзине
01:13:57
код, перейдем к следующему столбцу
01:14:01
это количество в этой таблице
01:14:05
ячейку я определил две кнопки и охватываю
01:14:11
первая кнопка - минус, чтобы уменьшить элемент
01:14:15
в
01:14:16
карта
01:14:17
затем сформируйте диапазон, чтобы показать
01:14:22
n, чтобы показать количество этого товара в
01:14:26
карточка, а следующая — это кнопка для
01:14:30
увеличить этот пункт в
01:14:32
корзина, последняя колонка, это очень просто
01:14:35
это предмет. цена, поставь доллар перед этим
01:14:39
показать цену товара сохранить
01:14:43
код и используйте этот компонент внутри страницы.
01:14:49
TSX в папке корзины вместо
01:14:54
div вернуть данные карты и импортировать их
01:14:58
с карты
01:15:00
детали меняют
01:15:02
заголовок этой страницы в корзину по
01:15:06
использование mea путем экспорта данных метода
01:15:12
константа и определение объекта, который имеет
01:15:16
заголовок заполнен, сохраните его, давайте исправим проблему
01:15:20
в реквизитах карты должен использоваться используемый роутер
01:15:23
быть импортирован из следующей навигационной системы SL, не
01:15:27
следующий SL
01:15:28
обновите маршрутизатор и сохраните отличный код
01:15:32
здесь у меня есть товары в корзине покупок, и я
01:15:35
может
01:15:37
уменьшать и увеличивать, если я уменьшаю его
01:15:40
от одного да, тележка пуста и она
01:15:46
удаляет из корзины перейти
01:15:49
Покупка
01:15:51
выберите добавить в корзину
01:15:54
и переходим на страницу карты давайте реализуем
01:15:57
часть действия, чтобы показать
01:16:00
промежуточный итог и перенаправить пользователя на
01:16:04
следующий шаг при оформлении заказа
01:16:08
мастер перехода к реквизитам карты в самом
01:16:12
конец
01:16:14
найдите этого разработчика и создайте еще один div
01:16:19
рядом с ним внутри этого создайте еще один
01:16:22
Дев
01:16:24
установите класс на карту, чтобы сформировать карту и
01:16:30
измените цвет фона на базовый BG
01:16:34
300 сохранить код, чтобы отформатировать его создать
01:16:38
другой разработчик установил имя класса в корзину
01:16:41
body для создания отступов в корзине и
01:16:46
theine Ура, закрой это и внутри этого
01:16:52
UR, я покажу саб
01:16:55
итоговый список
01:16:58
элемент внутри этого набора Define a Dev
01:17:02
заполнение кнопки до трех и установка шрифта
01:17:06
размер до x большой, покажите здесь промежуточный итог и
01:17:12
в скобках мы покажем
01:17:15
количество предметов в
01:17:18
корзина с предметами.
01:17:22
уменьшить, чтобы суммировать количество продуктов в
01:17:26
покупки
01:17:27
затем в корзину поставьте знак доллара и покажите товары
01:17:32
цена, которую мы уже рассчитали в
01:17:35
магазин подержанных карточек
01:17:37
крючок классный, вот у меня есть промежуточный итог
01:17:41
предмет на 70 долларов, если я увеличу, он будет
01:17:46
изменить форму последнего ли
01:17:50
вот аха, это кнопка
01:17:54
подпись - это интересно, чтобы проверить
01:17:57
класс BTN BTM первичный W полный полный
01:18:00
с основным цветом и для использования без щелчка
01:18:05
маршрутизатор. нажмите, чтобы перенаправить пользователя на
01:18:08
перевозки
01:18:10
экран, давайте проверим результат здесь, я
01:18:13
нажмите на proed, чтобы оформить заказ, и я сделаю
01:18:16
быть перенаправлен на экран доставки
01:18:20
потрясающе, быть успешно реализованным
01:18:23
Страница корзины Я могу добавить столько товаров, сколько
01:18:28
я
01:18:30
хочу как
01:18:32
это и перейти на карточку
01:18:35
страницу и перейдите к следующему шагу
01:18:39
страницу доставки на следующем уроке мы
01:18:42
продолжайте проверять страницы Visaard до тех пор, пока
01:18:47
этот урок
01:18:51
пока, на этом уроке мы собираемся
01:18:53
данные образца семян в mongodb, давайте
01:18:57
начните с настройки базы данных mongodb
01:19:00
у нас есть два варианта установки
01:19:03
mongodb локально на компьютере или с помощью
01:19:07
База данных Cloud mongodb по этому адресу
01:19:11
Я выберу этот, потому что
01:19:12
проще зайти на mongod be.com atlas SL
01:19:17
база данных нажмите попробовать
01:19:20
бесплатно, затем войдите сейчас и войдите в свой
01:19:24
учетная запись mongodb, с которой я собираюсь войти в систему
01:19:27
мой аккаунт Google там, где мы, если ты
01:19:30
нет кластера, нажмите «Создать»
01:19:33
кластер и здесь, когда у вас есть
01:19:36
нулевой кластер, нажмите на коллекции бровей
01:19:41
затем создайте новую базу данных, установите
01:19:44
имя базы данных, скажем, следующий Amazon
01:19:49
Название коллекции V2 для тестирования и и
01:19:53
следующий шаг создания — создание базы данных
01:19:57
получить доступ к пользователю базы данных, нажать «Добавить нового»
01:20:01
пользователь базы данных выбирает режим аутентификации
01:20:04
для пароля введите имя пользователя, я использую
01:20:09
имя базы данных в качестве имени пользователя и введите свое
01:20:12
пароль прокрутите вниз во встроенном правиле
01:20:16
выберите чтение и запись любого
01:20:19
базы данных, затем прокручиваю вниз и нажимаю
01:20:23
при добавлении пользователя следующий шаг в сети
01:20:27
доступ нажмите «ДОБАВИТЬ IP-адрес» и сделайте
01:20:32
он открыт для всех адресов, используя
01:20:38
0.0.0.0 sl0 поставил имя как у всех и
01:20:42
нажмите «Подтвердить», что мы здесь, вам следует
01:20:45
сделать эту строку активной, имея это
01:20:50
нажмите на базу данных и получите соединение
01:20:54
Строка Str здесь, нажмите «Подключиться»
01:20:59
драйверы SC прокрутите вниз и найдите
01:21:03
скопируйте строку подключения и вернитесь к
01:21:07
тот
01:21:08
проект в корневой папке
01:21:12
проект создать файл EnV, щелкните правой кнопкой мыши
01:21:16
mty Space новый
01:21:19
файл EnV и нажмите Enter, введите mono DP
01:21:26
подчеркните URI, равный, и вставьте
01:21:31
значение здесь заменяет угол имени пользователя
01:21:36
скобки с
01:21:39
для меня твое имя пользователя, это была следующая Амазона
01:21:47
dv2 введите свой
01:21:50
пароль для меня это этот, но я сделаю
01:21:53
измените его позже, поэтому вам нужно будет использовать свой
01:21:56
собственный пароль и после косой черты и
01:22:01
перед знаком вопроса войти в базу данных
01:22:03
имя следующего Das amazona
01:22:08
dv2 сохраните его, и вот у нас есть
01:22:12
Mongo DP в файле EnV, поэтому мне нужно добавить
01:22:18
EnV в список игнорирования GE, потому что я
01:22:21
не собираюсь делиться
01:22:23
это значение в моем репозитории GitHub перейдите по адресу
01:22:27
Система управления версиями щелкните правой кнопкой мыши файл EnV.
01:22:31
и нажмите «Добавить», чтобы игнорировать, пойдем
01:22:35
следующим шагом нам нужно создать соединение с БД
01:22:39
функция в живой папке создать
01:22:43
dbconnect
01:22:44
Живая папка TTS щелкните правой кнопкой мыши новый файл БД
01:22:50
соединять. ТС первый шаг это импорт
01:22:56
mongos mongos — это объект mongodb
01:23:00
моделирование для node.js
01:23:02
и имея это, мы можем иметь mongod
01:23:06
Кастинг и бизнес по валидации Deb
01:23:09
логика легко через наш nextjs
01:23:13
приложение, поэтому первый шаг
01:23:15
установка mongos открывает новый терминал
01:23:20
npm install mongos готово, и у меня есть
01:23:24
импортирован Mongo успешно, следующий шаг —
01:23:28
определение функции подключения к БД как асинхронной
01:23:32
функция здесь, я определяю соединение с БД
01:23:35
функция в TR catch call mongod db.
01:23:41
подключитесь как асинхронная функция и передайте
01:23:45
URI mongodb из среды
01:23:49
переменные с использованием процесса.env
01:23:52
URI mongodb, и я использую восклицательный знак
01:23:56
отметьте, чтобы nextjs подтвердил, что это значение
01:24:01
не является нулевым в улове через новый
01:24:04
ошибка и сообщение о сбое соединения
01:24:10
в конце мне нужно экспортировать соединение с БД
01:24:13
прямо здесь экспортируйте подключение к базе данных theault
01:24:15
сохраните код, перейдем к следующему шагу
01:24:19
следующий шаг — модель продукта, которая мне нужна
01:24:23
создать схему продукта es с помощью mos.
01:24:27
схема, давайте пойдем, откроем продукт
01:24:30
модель в папке моделей в папке live
01:24:34
и в самый
01:24:36
начинаем импортировать монго, затем определяем
01:24:40
схема продукта равна новому экземпляру
01:24:45
Функция mongos esema как передача параметра
01:24:50
объект, первым параметром которого является
01:24:53
объект, содержащий все файлы продукта
01:24:58
модель, первый файл — это имя типа a
01:25:03
веревка и требуется второй фетр
01:25:07
пуля, это строка типа А, это
01:25:10
требуется, но он тоже уникален, я использую
01:25:13
уникальный индекс в mongodb, чтобы убедиться
01:25:17
что в файле нет дубликатов
01:25:21
продукт
01:25:23
Следующая модель - это категория типа
01:25:26
строковое изображение товара, цена
01:25:31
типа номер марки типа А Струна
01:25:36
рейтинг и отсутствие превью типа номера
01:25:39
запас содержимого — значение по умолчанию для
01:25:42
Запас контента равен нулю описания
01:25:44
введите строку и появится
01:25:48
Логическое значение для отображения этого продукта в
01:25:51
домашняя страница, над которой мы будем работать дальше
01:25:54
уроки также, если продукт представлен I
01:25:57
нужно показать изображение баннера, вот почему
01:26:00
Я определяю строку, баннер которой
01:26:03
введите строку A, но это не требуется для
01:26:06
функция схемы, второй параметр
01:26:09
это параметры схемы как вариант, который я установил
01:26:14
временные метки в True, имея это, когда
01:26:18
новый
01:26:19
запись будет создана в базе данных
01:26:22
время
01:26:24
время создания и последнего обновления
01:26:28
эта запись будет сохранена как новые поля
01:26:32
в базе данных сохраните его и в следующем
01:26:36
строку из схемы продукта получить
01:26:39
модель продукта, используя этот код, если вы
01:26:42
внутри уже есть модель продукта
01:26:46
Модель Mongo, используйте ее, иначе вызовите модель
01:26:51
функция от mongos и передача имени
01:26:55
этой модели в базе есть
01:26:58
продукт и его схема SCH как
01:27:01
второй параметр модели и это
01:27:04
схему продукта SCH, которую мы уже
01:27:06
определено здесь в конце экспорта по умолчанию
01:27:11
модель продукта, чтобы мы могли использовать ее в других
01:27:15
файлы здесь, я собираюсь создать образец
01:27:18
пользователи, потому что нам это нужно в
01:27:20
мастер оформления заказа, подобный тому, что мы сделали для
01:27:23
модель продукта, я собираюсь создать новую
01:27:25
модель для пользователей в четырехуровневой модели
01:27:28
щелкните правой кнопкой мыши модель пользователя. TS импортирует монго
01:27:35
Определите схему пользователя, у нас есть имя пользователя
01:27:40
типа A String, требуется адрес электронной почты
01:27:43
пользователю типа A String требуется и
01:27:45
оно должно быть уникальным, для которого не должно быть
01:27:47
есть дубликаты адресов электронной почты, пароль
01:27:51
введите строку и являетесь администратором типа
01:27:54
Логическое значение требуется и по умолчанию
01:27:57
это неверно, также установите отметку времени
01:28:00
иметь созданные данные, время и последний
01:28:04
обновлено количество пользователей, получена модель пользователя
01:28:09
на основе пользовательской схемы и экспорта
01:28:12
пользовательская модель theault отлично, поехали
01:28:16
последний шаг — вставка образца
01:28:20
данные в базу данных
01:28:22
Я собираюсь реализовать эту функцию в
01:28:25
API продуктов переходит в приложения, щелкните правой кнопкой мыши
01:28:30
новая папка для API внутри, в которой создается
01:28:36
новая папка для продуктов внутри нее
01:28:40
создайте новую папку для семян и внутри
01:28:44
семя создает новый файл для маршрута. ТС от
01:28:50
имея этот файл
01:28:52
мы можем создать образец данных, перейдя в
01:28:56
этот адрес SL API продукта/SE, который мы используем
01:29:01
Обработчик маршрута из nextjs 13, определив
01:29:06
маршрут. TS в папке API, давайте определим
01:29:11
Метод G здесь использует экспорт этой функции
01:29:16
const получите асинхронную функцию, которая
01:29:20
принять запрос как параметр его типа
01:29:23
следующий запрос импортировать следующий запрос из
01:29:27
следующий SLS-сервер, внутри которого будут получать пользователи
01:29:32
и продукты из данных данные скоро появятся
01:29:36
из li/dat здесь у нас нет пользователей
01:29:42
перейти к данным. ТС и прямо перед этим
01:29:46
продукты Определить пользователей как массив Определить
01:29:51
первый пользователь user как объект, который у него есть
01:29:54
имя электронной почты, пароль и администратор, вы можете
01:29:58
установите все, что захотите, но для
01:30:01
пароль нам нужен, чтобы зашифровать пароль
01:30:04
используя пакет bcrypt, поэтому мне нужно
01:30:08
установите bcrypt JS, это пакет для
01:30:13
зашифровать данные, установить их и импортировать по адресу
01:30:18
очень
01:30:19
начало точек
01:30:22
импортировать bcrypt
01:30:24
JS, как вы видите, я
01:30:27
получение не смогло найти файл декларации
01:30:31
поэтому мне нужно скопировать это и установить типы
01:30:36
bpjs, чтобы избавиться от этого
01:30:40
предупреждение об установке npm в зависимости
01:30:45
Зависимость разработчиков от типов знаков
01:30:48
sljs, здесь нет ошибки, поэтому первое
01:30:52
пользователь — Джон, адрес электронной почты — admin, Signex
01:30:56
example.com пароль: 1 2 3
01:30:59
456 он зашифрован в базе данных и
01:31:03
является ли администратор правдой, поэтому этот пользователь является администратором
01:31:06
давайте после этого определим обычного пользователя
01:31:10
создать обычного пользователя Jane по адресу
01:31:15
подпишите пароль example.com таким же и
01:31:17
это admin - ложь, вернитесь к маршруту. ТС
01:31:21
и здесь нет ошибки для пользователя
01:31:25
после получения образцов данных пришло время
01:31:27
подключиться к базе данных с помощью DB Connect
01:31:31
функция импорта БД, подключение из li/DB
01:31:34
подключиться, мы уже определили эту функцию
01:31:39
после подключения к вызову базы данных
01:31:42
удалить меню модели пользователя, импортировать пользователя
01:31:47
модель из папки Models, что она делает:
01:31:50
удалить все все записи у пользователя
01:31:54
сбор, затем вызовите вставку маню на
01:31:58
модель пользователя и передавать пользователей из данных.
01:32:03
TS, что он делает, так это создает два новых
01:32:06
пользователи в базе данных делают то же самое для
01:32:10
модель продукта, импортируйте ее из моделей
01:32:13
папку, а затем отправьте результат Json, используя
01:32:19
следующий ответ. Импорт функции Json следующий
01:32:23
ответ от следующего сервера SL в формате Json
01:32:27
объект, мы передаем сообщение, это семя
01:32:31
успешно, а пользователи и продукты
01:32:35
сохраните код, проверим результат
01:32:38
открыть новую вкладку перейти к столбцу местного дома
01:32:42
3000 SL
01:32:44
API
01:32:46
Продукты SL разрезают семена и нажимают Enter
01:32:52
круто, мы получаем это сообщение, смотри
01:32:54
что пользователи и продукты успешно
01:32:58
давайте проверим результат в базе данных
01:33:01
установить mongodb Campus по этой ссылке, открыть
01:33:06
mongodb Campus перейдите в свой файл и скопируйте
01:33:11
URI mongodb вставьте его сюда и нажмите
01:33:15
при подключении подождите некоторое время, чтобы подключиться к
01:33:19
база данных и где мы находимся, у нас есть
01:33:23
следующий Amazon V2, и у него есть образец
01:33:28
продукты вот мы и примеры пользователей
01:33:33
отлично, мы успешно подключились к
01:33:36
базу данных и данные образца, размещенные в
01:33:39
на следующем уроке мы сделаем исходники
01:33:42
вместо этого данные динамические из базы данных mongod
01:33:45
статических данных.
01:33:50
ТС
01:33:53
в этом уроке мы собираемся загрузить
01:33:55
продукты из базы данных, находящейся в данный момент
01:33:58
домашняя страница, с которой мы загружаем товары
01:34:01
данные. продукты в данных. ТС они такие
01:34:04
статический, и мы собираемся это сделать
01:34:07
Динамический из базы данных mongodb, которая
01:34:10
мы создали на предыдущем уроке, давайте
01:34:13
начните с создания сервиса по продуктам здесь
01:34:16
мы собираемся определить некоторые функции для
01:34:18
загрузить данные из базы данных и начать жить в течение
01:34:21
папка создать новую папку для сервисов
01:34:25
внутри этого создайте новый файл, установите
01:34:28
имя продукта service.ts в этом файле
01:34:33
импортировать кэш из пакета реагирования, который мы используем
01:34:36
кэш для кэширования результата запроса к базе данных
01:34:39
и предотвратить множественное попадание в базу данных
01:34:43
затем экспортируйте минусы, повторно проверив их на
01:34:47
3600, установив повторную проверку денежных средств
01:34:51
значение Val будет обновляться не чаще каждого раза.
01:34:54
час, затем определите первую функцию
01:34:58
получить последнюю версию и обернуть функцию ace
01:35:02
в функции кэша из реакции
01:35:05
Возвращаемое значение внутри этого Асинга
01:35:08
функция будет кэширована реакцией в этом
01:35:11
функция подключения к базе данных с помощью
01:35:13
DB Connect импортирует его из активной папки
01:35:17
вот так, затем вызовите метод find
01:35:21
такая модель продукта и на основе сортировки
01:35:25
по убыванию идентификатора, поэтому мы собираемся
01:35:28
получайте новейшие продукты первыми и
01:35:32
вызывая лимит четыре, мы получаем первые четыре
01:35:35
документы в коллекции продукции и
01:35:39
используйте Lean, чтобы преобразовать результат в простой
01:35:43
Объект JavaScript в конце возврата
01:35:46
продукты как импорт массива продуктов
01:35:50
товар из активной папки сохраните код
01:35:53
в конце Определите продукт Сервис как
01:35:56
объект, содержащий функцию получения последней версии
01:36:00
затем экспортируйте сервис продукта theault и сохраните.
01:36:03
код возвращается к плану и здесь
01:36:06
пришло время определить избранный продукт
01:36:10
сразу после получения последней версии Define get
01:36:13
по характеристикам они очень похожи друг на друга
01:36:15
другое, но дело в находке
01:36:19
метод, который мы передаем
01:36:22
критерии указаны для того, чтобы он возвращал
01:36:27
для нас только рекомендуемый продукт, потому что
01:36:30
мы собираемся показать только три элемента в
01:36:32
карусель избранных товаров «Я могу»
01:36:36
колл-лимит три и колл-линк
01:36:39
преобразовать результат в простой JavaScript
01:36:42
объект, сохраните код, поместите его в список
01:36:45
список услуг по продукту последний
01:36:49
функция в обслуживании продукции.
01:36:52
слизень, мы собираемся получать продукты с помощью слизняка
01:36:55
Мне нужно определить пулю как параметр
01:36:58
введите строку подключения к базе данных и
01:37:01
позвони, найди одного из монго и передай
01:37:06
slog в качестве параметра этой функции, затем
01:37:09
называть бережливым и возвращать продукт как продукт
01:37:13
объект здесь, я могу вернуть это как товар
01:37:16
возражайте против публикации в избранном, не забудьте
01:37:19
экспортировать, добыть продукт с небольшими порциями
01:37:23
сервис, сохраните код и приступим к делу
01:37:26
следующий шаг — на главной странице в
01:37:29
плита slf на первой странице. TSX перед поездкой
01:37:35
для создания динамических данных я собираюсь установить
01:37:39
данные Neta и измените заголовок и
01:37:43
описание на основе значения в
01:37:47
EnV-файл, чтобы мы могли придумать название веб-сайта.
01:37:53
и
01:37:54
описание Динамическое в зависимости от значения
01:37:57
в файле EnV импортируйте метаданные из
01:38:01
далее, а затем в файле EnV Определить
01:38:06
название следующего общедоступного приложения, какое бы вы ни выбрали
01:38:09
как здесь, в моем случае это следующий Amazon
01:38:13
V2 вы можете установить сайт электронной коммерции
01:38:16
имя, если вы не установили эти значения
01:38:20
будет использовано значение по умолчанию, пришло время
01:38:23
получить новейший продукт и рекомендуемый продукт
01:38:26
из обслуживания продукта сделать
01:38:29
функция асинхронная и внутри этой функции
01:38:33
под названием «Сервис продукта» становится представленным и
01:38:36
обслуживание продуктов, получайте последние версии и ставьте
01:38:39
результат внутри рекомендуемых продуктов и
01:38:42
новейшие продукты, импорт продуктов, обслуживание
01:38:47
из папки «Службы», а затем пришло время
01:38:50
использовать, использовать результат в возврате
01:38:54
раздел Рекомендуемый продукт. Определите
01:38:57
Разработчик использует Карла из пользовательского интерфейса Daisy, чтобы сделать это
01:39:01
закруглено, установите поле сверху на четыре и сделайте
01:39:05
это полная ширина внутри, создайте jsx
01:39:09
подобное выражение для функционального продукта
01:39:12
вызовите функцию карты и получите товар
01:39:15
и индекс, затем Определите Dev, установите ключ
01:39:19
к идентификатору продукта, чтобы сделать его уникальным
01:39:22
и установите идентификатор этого div на слайд
01:39:26
Штриховой индекс для первого продукта равен
01:39:29
будет нулевой слайд, второй продукт
01:39:31
второй слайд и т. д. установите имя класса на
01:39:34
Элемент карусели сделайте его относительным и полным
01:39:37
ширина внутри этого Определить импортированную ссылку
01:39:41
по ссылке Nexus SL и установите для HRI значение/
01:39:46
продукт / фрагмент продукта поместите изображение
01:39:50
элемент здесь устанавливает источник изображения на
01:39:53
продукт. Баннер и установите имя класса на
01:39:57
с полным, чтобы сделать его полным и
01:39:59
альтернативный текст к товару. имя, чтобы получить
01:40:02
избавьтесь от этого далекого имени, нажмите «Быстрое исправление»
01:40:05
и отключите элемент изображения для
01:40:09
весь файл, имея это нет
01:40:12
предупреждение в этой строке, сохраните код, ахах
01:40:15
здесь у нас есть карусель, но ее нет
01:40:18
иметь стрелки для переключения между изображениями
01:40:21
создать кнопку со стрелкой для навигации между
01:40:25
слайд-изображения Определите Dev и установите класс
01:40:28
назовите это, а затем внутри этого. Определите два
01:40:33
якорь, первый якорь слева
01:40:36
кнопка и вторая для правой кнопки
01:40:40
установите hre на слайд и значение
01:40:44
после слайда Dash основан на индексе
01:40:47
если мы на первом изображении, когда ты
01:40:50
пользователь нажимает на стрелку влево, нам нужно
01:40:54
покажи последнее изображение, иначе нам придется
01:40:58
уменьшить индекс на один очень похожий
01:41:01
логика применима к правой кнопке и
01:41:04
вот результат, между которым мы можем переключаться
01:41:06
изображения отличные, вот и все
01:41:09
карусель, давай закроем ее и перейдем к
01:41:12
новейший продукт вместо того, чтобы получать от
01:41:15
статические данные, которые я собираюсь получить последние
01:41:18
товар из базы сохранить код
01:41:21
и вот мы продукты вот
01:41:25
Динамический из базы данных Клик-коннект
01:41:28
на этой странице данные не являются динамическими
01:41:30
давайте сделаем так, чтобы этот Dynamic тоже перешел на страницу.
01:41:33
TSX в приложении slf, передняя часть продукта SL/Slug
01:41:38
и WR перед функцией сведений о продукте
01:41:41
Определите функцию генерации метаданных и
01:41:45
Экспортируйте его, мы собираемся изменить
01:41:47
название страницы сведений о продукте на основе
01:41:51
название продукта, чтобы мы получили параметры
01:41:56
и из параметров получить пулю, а затем из
01:41:59
продукт, услуга, импортированный звонок, получи
01:42:02
slug и передайте его в качестве параметра
01:42:06
эта функция затем получает продукт и
01:42:09
если оно равно нулю, покажите сообщение об ошибке
01:42:13
в противном случае установите заголовок и описание
01:42:16
на основе названия и описания продукта
01:42:19
сохраните код и вот оно
01:42:22
классические ручки в деталях продукта
01:42:25
вместо того, чтобы получать продукт с производства
01:42:28
делать продукты, из которых мы собираемся их получить
01:42:30
функция изменения обслуживания продукта, чтобы
01:42:34
async и замените эту строку на эту
01:42:38
позвоните в службу поддержки продуктов Aade, получите Slug
01:42:41
и передайте фрагмент из URL-адреса как
01:42:45
параметр, который нужно получить с помощью функции сохранения пула
01:42:47
код и вот мы, вот данные
01:42:52
подробности поступают из базы данных
01:42:56
прежде чем закончить этот урок, давайте исправим
01:42:59
у нас есть проблема на слабой странице
01:43:04
добавить в компонент карты, это клиентская часть
01:43:09
компонент, который мне нужен для преобразования продукта
01:43:12
с сервера на простой JavaScript
01:43:16
объект, чтобы избавиться только от этого предупреждения
01:43:20
простой объект может быть передан клиенту
01:43:22
компонент из серверных компонентов сделать
01:43:25
что я собираюсь определить помощника
01:43:28
функция для преобразования документа doc mongodb в
01:43:33
Объект JavaScript перейдет в живые утилиты и
01:43:38
Определите новую функцию с именем Convert Doc.
01:43:41
чтобы возразить, получите документ любого типа и
01:43:45
преобразовать идентификатор здесь идентификатор имеет тип
01:43:49
Идентификатор объекта mongodb в строку, а затем
01:43:53
вернуть документ сохранить его вернуться к
01:43:57
страницу и здесь вызовите конвертацию дока в
01:44:00
возражать против импорта товара импорт
01:44:04
преобразовать док в объект из сохранения утилит
01:44:08
его и перезапустите проект, затем обновите
01:44:13
страница сведений о продукте на этот раз там
01:44:16
это не ошибка, мы можем сделать то же самое для
01:44:20
домашнюю страницу, когда мы передаем продукт на
01:44:24
товар, который мы можем обернуть внутрь
01:44:28
преобразовать документ в объект, подобный этому обновлению
01:44:33
страница и домашняя страница и подробности
01:44:36
страница работает как мы хотим и нет
01:44:39
ошибка или предупреждение в консоли отлично подходит для
01:44:42
в этом уроке мы меняем источник данных
01:44:45
из статических данных. TS в динамический mongodb
01:44:50
база данных данных и мы меняем продукт
01:44:52
название на основе названия продукта, которое
01:44:56
это об этом уроке до следующего урока
01:45:02
[Музыка]
01:45:03
пока, на этом уроке мы собираемся
01:45:06
реализовать аутентификацию пользователя для этого
01:45:09
цель, которую мы собираемся установить последнюю версию
01:45:12
версию NEX o с помощью этой команды вы
01:45:15
если хотите, можете использовать pnpm вместо npm
01:45:20
для этого вам нужно установить pnpm
01:45:23
во-первых, это менеджер пакетов для npm и
01:45:27
это намного быстрее и лучше, чем npm для
01:45:30
установка пакетов открывает новый терминал
01:45:33
и установите pnpm во время
01:45:36
записываю это видео, версия пятая
01:45:39
должен быть установлен с использованием бета-версии знака
01:45:42
поэтому я просто устанавливаю его вот так:
01:45:46
время просмотра этого видео у вас может быть
01:45:48
пятая версия стабильна, поэтому вы можете использовать
01:45:51
это без знака бета, вот и все
01:45:54
установлено, давайте установим форму реагирования
01:45:58
с использованием
01:45:59
pnpm установите или добавьте все, что захотите
01:46:02
работает хорошо, у нас есть форма реагирования на
01:46:06
создайте форму входа, и пришло время установить
01:46:11
переменные среды для следующего раза они
01:46:14
отключены URL и O secret, открытый файл EnV
01:46:20
и установите URL-адрес в столбце «Локальный хост»
01:46:23
3000 и не по секрету что-то секретное
01:46:27
Следующий шаг — создание офф. ТС для создания
01:46:30
конфигурация для следующего запуска в эксплуатацию
01:46:34
папку щелкните правой кнопкой мыши, выключите новый файл. ТС
01:46:40
первый шаг — экспорт константы конфигурации
01:46:45
как объект в этом объекте мы собираемся
01:46:48
настроить следующую аутентификацию
01:46:53
первый шаг – определить поставщика, который это
01:46:56
массив, поэтому у нас есть возможность определить
01:46:59
Google GitHub и другие
01:47:03
поставщики аутентификации, но вот мы здесь
01:47:07
собираюсь использовать поставщика учетных данных для
01:47:10
аутентифицироваться по электронной почте пользователя и паролю
01:47:14
Итак, что нам нужно сделать, это позвонить
01:47:16
поставщик учетных данных, импортированный из Nex
01:47:20
выключенный
01:47:21
и в качестве параметра этой функции передайте
01:47:24
объект, содержащий учетные данные и
01:47:27
в учетных данных Определите адрес электронной почты и
01:47:30
следующий шаг – определение пароля
01:47:33
авторизованная функция в учетных данных
01:47:35
провайдер принимает учетные данные как
01:47:38
параметр и когда пользователь вводит адрес электронной почты и
01:47:41
пароль и нажмите «Войти»
01:47:44
функция обрабатывает запрос, поэтому он
01:47:48
ясно, что нам нужно сделать здесь в первую очередь
01:47:50
Прежде всего нам нужно подключиться к
01:47:52
импорт базы данных, подключение к базе данных, если есть
01:47:55
нет возврата полезной нагрузки, ноль, не аутентифицирован
01:48:00
затем импортируйте модель пользователя и позвоните, чтобы найти ее
01:48:04
найти электронное письмо по электронной почте
01:48:07
со страницы входа и получить пользователя, если
01:48:11
пользователь существует, проверьте пароль, используя
01:48:13
пакет bcrypt импортирован следующим образом и
01:48:18
затем, если он соответствует true, верните пользователя
01:48:21
это успешная аутентификация, и если
01:48:24
есть ошибка, верните ноль, чтобы показать
01:48:26
сообщение об ошибке перейдите к модели пользователя и
01:48:30
поставь вопросительный знак сразу после модели, чтобы
01:48:34
избавиться от ошибки в средней версии сохранить
01:48:38
код и перейдем к следующему шагу
01:48:42
это сразу после определения провайдера
01:48:46
Страницы, потому что у нас будет каст
01:48:50
персонализированные страницы для входа и
01:48:52
зарегистрируйтесь после Pages Define обратных вызовов
01:48:56
в следующем офф конфиге и первом
01:49:00
обратный звонок разрешен вот
01:49:04
уполномоченный
01:49:05
функция, она будет запущена пользователем
01:49:09
аутентификация мы принимаем запрос и выключаем
01:49:13
в качестве параметра внутри у нас есть
01:49:15
защищенный путь, поэтому пользователь должен быть
01:49:19
авторизованный доступ оплата доставки
01:49:22
Администратор профиля размещения заказа и слайд заказа
01:49:25
в порядке, я использую регулярное выражение для
01:49:29
обложка Динамические значения для идентификатора заказа, если
01:49:34
URL-адрес находится в этом списке, затем проверьте
01:49:39
аутентификация, если выключено, возвращает значение null
01:49:42
ложный пользователь не может получить доступ к этой странице
01:49:45
и если у нас есть значение для аутентификации
01:49:48
используя двойной восклицательный знак, отметьте его
01:49:50
возвращает true, в противном случае возвращает true
01:49:53
означает, что все остальные страницы будут
01:49:56
общедоступно для всех пользователей, сохраните код и приступайте
01:50:01
для следующей функции обратного вызова это JWT
01:50:05
функция в этой функции мы принимаем пользователя
01:50:08
запускать сеанс и токен, если пользователь существует
01:50:12
мы заполняем токен. пользователь с пользователем
01:50:17
информация из базы данных
01:50:20
если триггер — обновление, это означает, что
01:50:23
мы обновляем профиль пользователя, и если
01:50:26
сеанс существует, затем обновите пользователя с помощью
01:50:30
обновленный адрес электронной почты и имя, пойдем
01:50:33
последняя функция обратного вызова, это сеанс
01:50:37
и то, что мы здесь сделали, это заполнить
01:50:40
сессия. пользователь с токеном. пользователь из
01:50:44
предыдущий шаг, когда мы вызываем use
01:50:47
сессия, эта функция возвращает пользователя
01:50:50
информация для нас на стороне клиента
01:50:53
аутентификация, сохраните код и переходите к
01:50:56
следующий шаг нам просто нужно
01:51:00
экспортировать константу этого объекта из Nex выкл.
01:51:05
функция импорта будет отключена по умолчанию
01:51:09
импортировать из следующего пакета и пройти
01:51:12
конфигурация как параметр NEX
01:51:15
выключена функция, затем они структурируют
01:51:18
результат и и Экспортировать получение и публикацию из
01:51:22
Функция отключения объекта обработчика, мы используем ее
01:51:26
многое в этом курсе: войдите и выйдите
01:51:29
для обработки подписи пользователя и подписи пользователя
01:51:33
сохраняем код, переходим к следующему шагу
01:51:37
Следующий шаг – определение середины. ТС в
01:51:40
корень проекта перейти в корень по адресу
01:51:42
пустое место, щелкните правой кнопкой мыши новый файл
01:51:46
середина. Первая строка кода TS в
01:51:50
средняя версия. TS — это экспорт этого кода
01:51:53
отключена как средняя версия с самого начала. Это это
01:51:58
мы определили здесь, имея эту строку
01:52:01
кода все URL будут переданы в
01:52:04
средняя версия и аутентификация пользователя
01:52:07
будут проверены на основании уполномоченного
01:52:11
функция, которая у нас здесь есть, я собираюсь
01:52:14
избавиться от некоторых URL-адресов, включая изображения
01:52:17
API, поэтому мне нужно добавить
01:52:20
config экспортируйте его и в сопоставлении получите
01:52:24
избавиться от статических изображений API и значка избранного
01:52:29
Следующий шаг — создание маршрута. ТС в выключенном состоянии/
01:52:35
следующий
01:52:36
папка off/ перейдите в папку API и создайте
01:52:41
выключить API папки, выключить новую папку внутри
01:52:46
что
01:52:47
создать точку, сделать следующее внутри эскара
01:52:51
скобки, щелкните правой кнопкой мыши новую папку и
01:52:54
внутри этого маршрута Define. ТС щелкните правой кнопкой мыши
01:52:59
новый маршрут файла. TS в этом файле экспорта
01:53:03
получить и опубликовать от li/off, чтобы бывший
01:53:07
экспорт get и post будет использоваться в
01:53:12
этот файл для аутентификации пользователя для получения
01:53:15
и размещать запросы, следующим шагом будет создание
01:53:19
компонент поставщика для обертывания всего
01:53:23
приложение перейти в папку компонентов новое
01:53:26
файловый провайдер. TSX вот код для
01:53:30
компонент поставщика Определить асинхронную функцию
01:53:34
провайдер это серверный компонент сайта
01:53:36
серверный компонент и отключить импорт из
01:53:40
выключенный. Поставщик TS и сеансов из следующего
01:53:44
выключить/реагировать на этот компонент принять
01:53:47
дети в качестве реакции и отзовитесь как
01:53:53
функцию Асинга и вернуть результат
01:53:56
на сеансе, затем оберните детей в
01:54:01
поставщик сеансов и передать сеанс как
01:54:05
реквизит для компонента провайдера сеанса
01:54:08
так что дети будут макет и
01:54:11
у нас есть доступ к сеансу использования
01:54:15
сессия в ближайшее время на протяжении всего
01:54:17
клиентские компоненты, чтобы сделать это, перейдите в раздел
01:54:21
макет. TSX в папке приложения и справа
01:54:24
после тела Определить поставщика переместить разработчика
01:54:29
внутри провайдера и импортируйте его из
01:54:32
папку компонентов, сохраните код и
01:54:35
давайте перейдем к следующему шагу, здесь мне нужно
01:54:39
прежде всего создать форму входа
01:54:43
создать папку для входа и создать форму
01:54:46
Компонент в приложении, щелкните правой кнопкой мыши по значку
01:54:50
внутри этой новой файловой формы. TSX первый
01:54:56
шаг - определение компонента формы и
01:55:00
Экспортируйте его, а затем получите этот сеанс, используя
01:55:04
использовать сеанс, импортированный из Nex, выключить/реагировать
01:55:09
и переименуйте данные в использование сеансового вызова
01:55:13
поиск паров из следующей навигации SL и
01:55:17
извлеките URL-адрес обратного вызова в запросе
01:55:20
строку и поместите ее в URL обратного вызова
01:55:24
также нам нужно перенаправить пользователя в этом
01:55:27
страница, поэтому мне нужно использовать Router Hook
01:55:31
от Nex SL
01:55:33
навигация прямо перед формой Определить тип
01:55:37
входы и как объект, который содержит
01:55:43
адрес электронной почты и пароль, а затем сразу после использования
01:55:47
маршрутизатор Определить форму использования
01:55:50
Крюк из формы реагирования, импортированной из
01:55:53
Форма реагирования на крючок передает значение по умолчанию
01:55:57
для этой формы адрес электронной почты и пароль
01:56:00
равно строке МТС и получить регистр
01:56:04
обрабатывать отправку и формировать состояние после использования
01:56:08
сформировать хук после этого Определить эффект использования
01:56:12
и если сеанс существует, перенаправить пользователя на
01:56:16
URL обратного вызова, потому что если пользователь
01:56:19
уже авторизован, нет необходимости
01:56:22
на этой странице, и нам нужно перенаправить
01:56:24
пользователь к использованию импорта URL обратного вызова
01:56:28
эффект от реакции, после этого пора
01:56:31
Определить функцию отправки формы
01:56:36
тип возвращаемого значения для отправки — submit
01:56:39
Обработчик из формы реагирования с входами
01:56:43
как общий тип, это асинхронная функция
01:56:47
которые принимают форму и в той форме, в которой мы
01:56:50
извлеките адрес электронной почты и пароль и позвоните
01:56:53
функция входа из следующего SL реагирует
01:56:59
первый параметр — это поставщик, который это
01:57:01
учетные данные, а второй параметр — это
01:57:03
полезная нагрузка, которая включает в себя электронную почту и
01:57:06
пароль, давайте перейдем к части «Возвращение»
01:57:10
то, что я собираюсь вернуть, это разработчик
01:57:13
максимальное значение составляет
01:57:16
24 R с использованием Max и небольшими предметами.
01:57:21
центр использует тележку для создания набора границ
01:57:25
цвет фона и создание полей
01:57:28
вертикально внутри, что создает тело тележки
01:57:32
и установите шрифт заголовка для входа в систему, сохраните
01:57:35
файл выбрать товар добавить в корзину перейти
01:57:40
страницу корзины и перейдите к оформлению заказа, как
01:57:43
видишь, страницы входа нет, поехали
01:57:48
для этого в входе щелкните правой кнопкой мыши новый
01:57:51
страница файла. TSX в импорте страницы входа
01:57:57
метаданные и форма из папки входа
01:58:01
и установите заголовок этой страницы для подписи
01:58:04
затем экспортируйте функцию Asing и войдите в систему.
01:58:09
это серверный компонент и форма возврата
01:58:14
компонент из той же папки сохраните
01:58:17
файл вернуться к форме в самом
01:58:21
начинаем делать это клиентским компонентом
01:58:25
избавься от этой ошибки офигенно хорошо мы
01:58:29
готовы приступить к формированию полей ввода
01:58:32
для электронной почты и пароля сразу после
01:58:34
заголовок fun, проверьте строку quer на наличие
01:58:39
ошибка в URL-адресе, если есть
01:58:42
ошибка покажите сообщение об ошибке убедитесь
01:58:45
что ошибка равна учетным данным
01:58:48
войдите в систему и, если он отображается, отобразите неверный адрес электронной почты
01:58:52
пароль, в противном случае покажите ошибку
01:58:54
сообщение в том виде, в котором оно есть, используйте текстовое сообщение об ошибке, чтобы
01:58:58
показать ошибку красным цветом после этой проверки
01:59:03
успешный, если все будет
01:59:06
успешно, если у нас есть успешный запрос
01:59:09
строка показывает ее значение зеленым цветом
01:59:14
цвет, после этого пришло время создать
01:59:16
форма, установленная при отправке, для обработки формы отправки
01:59:20
функция отправки с использованием формы реагирования
01:59:24
и в качестве первого файла электронной почты формы поля ввода
01:59:29
в div создайте метку и поле ввода
01:59:33
вызов
01:59:34
зарегистрироваться и поле ввода для регистрации
01:59:37
электронная почта, сделайте это обязательным и используйте это
01:59:41
шаблон, чтобы убедиться, что электронное письмо
01:59:44
действительно, если есть ошибка, покажите
01:59:47
сообщение об ошибке для этого поля ввода секунда
01:59:51
Поле ввода предназначено для ввода метки пароля
01:59:55
окно сообщения об ошибке вот результат и
01:59:59
последняя - это кнопка в создании div
02:00:04
кнопка типа БТН первичная полная с
02:00:09
отключить, если отправка верна, покажите
02:00:13
spinner, заголовок этой кнопки
02:00:17
войдите в систему Давайте проверим введите неправильную информацию
02:00:21
войдите в систему, адрес электронной почты недействителен, войдите в систему
02:00:24
неверный адрес электронной почты или пароль и данные.
02:00:29
TS введите правильный адрес электронной почты и пароль и
02:00:34
войдите в систему, круто, мы успешно подписались
02:00:38
и мы будем перенаправлены на домашнюю страницу
02:00:41
поэтому нам нужно вместо этого показать имя пользователя
02:00:44
кнопки входа в меню. TSX на
02:00:48
самое начало компонента меню справа
02:00:51
перед возвратом Определить обработчик выхода
02:00:55
и позвоните, выйдите, импортируйте его из следующего
02:00:58
выключить/отреагировать и передать URL обратного вызова
02:01:03
страницу входа и в части «Возвращение» получите
02:01:06
избавиться от Ли для входа в систему и заменить его
02:01:10
с помощью этого кода, если сеанс существует, получите
02:01:14
сеанс от использования сеанса от следующего-выкл.
02:01:19
из/реагировать вот так и переименовывать данные
02:01:23
к сеансу, если сеанс существует и
02:01:25
сессия. пользователь существует, это означает, что пользователь
02:01:28
аутентифицирован, поэтому мне нужно отобразить
02:01:31
этот Ли в LI создает раскрывающийся список
02:01:35
с помощью пользовательского интерфейса Daisy создайте метку и внутри
02:01:40
которые показывают имя пользователя на этикетке и
02:01:44
используйте этот SVG, чтобы создать морковку под ним
02:01:47
должно быть похоже на
02:01:49
раскрывающийся список, а затем, когда пользователь нажимает
02:01:54
на имени пользователя этот Ур появляется в этом
02:01:58
UL У меня есть элемент списка, и это только знак
02:02:02
на следующем уроке мы добавим профиль
02:02:04
историю заказов и другие пункты меню, чтобы
02:02:08
этот UL, в противном случае просто покажите вход
02:02:11
кнопка, но на этот раз мне нужен позывной
02:02:14
в следующий раз SL отреагирует вот так
02:02:19
вот и у нас есть Джон, если я нажму I
02:02:22
нужно выйти из системы, когда я нажимаю кнопку «Выйти»
02:02:25
будет выполнен выход и перенаправлен на
02:02:28
страница входа, попробуем еще раз, введите
02:02:32
знак администратора example.com, вход здесь
02:02:37
Джон, выходим, отлично, мы успешно
02:02:41
реализована аутентификация пользователя в этом
02:02:44
урок до следующего урока
02:02:47
пока-пока
02:02:49
[Музыка]
02:02:51
в этом уроке мы собираемся реализовать
02:02:53
Пользователь
02:02:54
регистрация, давайте начнем с создания
02:02:57
маршрут
02:02:58
Обработчик по этому поводу
02:03:00
адрес
02:03:02
API выключен, щелкните правой кнопкой мыши новую папку
02:03:08
зарегистрируйтесь внутри этого щелкните правой кнопкой мыши новый
02:03:11
маршрут файла.
02:03:15
ТС, я собираюсь создать API
02:03:19
чтобы получить информацию о пользователе и создать
02:03:23
новый пользователь в
02:03:25
база данных, это почтовый API, поэтому я экспортирую
02:03:28
константа
02:03:30
post равен асинхронной функции, которая
02:03:33
принять запрос типа следующий запрос
02:03:37
импортировано из следующего
02:03:40
сервер получает адрес электронной почты с именем пользователя и
02:03:44
пароль из полезных данных запроса с использованием
02:03:47
запрос. Функция Json, это Asing
02:03:51
функция подключения к импорту базы данных
02:03:55
DP-соединение в прямом эфире
02:03:58
папку, затем создайте хеш-пароль, используя
02:04:02
пакет bcrypt
02:04:06
импортировано сохранить код переместить этот импорт
02:04:11
в самом конце сразу после упаковки
02:04:16
Импорт и вот мы имеем
02:04:19
хешированный пароль, мы передаем пароль
02:04:23
простой текстовый пароль от пользователя и
02:04:27
создать хеш
02:04:30
пароль, затем используя объект модели пользователя
02:04:34
из папки «Модели»
02:04:39
импортированный пропуск с именем пользователя по электронной почте и
02:04:43
пароль, затем получите нового пользователя mongos
02:04:48
объект
02:04:49
здесь мы готовы создать этого пользователя в
02:04:52
тот
02:04:53
база данных, чтобы сделать это, создайте TR-ловушку
02:04:56
блок, чтобы отловить любую ошибку, если есть
02:05:00
ошибка при создании пользователя в базе данных
02:05:04
вот код для создания TR
02:05:07
ловить
02:05:09
заблокировать вызов
02:05:11
Функция сохранения на новом
02:05:14
пользователь
02:05:16
объект, и если все в порядке, К.
02:05:20
верните этот ответ
02:05:23
цвет
02:05:26
Пользователь сообщения API создан и
02:05:30
тот
02:05:31
статус 2011, потому что мы создали новый
02:05:36
ресурс на основе restful API
02:05:40
Код ответа должен быть 2011, если есть
02:05:43
ошибка, код состояния 500 сервер
02:05:47
ошибку и вернуть
02:05:50
сообщение великолепное, мы успешно создали
02:05:54
серверный API для создания нового пользователя
02:05:57
и пришло время приступить к созданию
02:05:59
часть интерфейса, которая нам нужна для создания формы.
02:06:03
TSX добавить этот адрес идти
02:06:07
в приложение
02:06:10
передний правый клик новый
02:06:13
папка
02:06:16
зарегистрировать папку внутри этого нового файла
02:06:20
форма. TSX это клиентская часть
02:06:26
компонент, который создает форму для
02:06:29
регистр
02:06:30
пользователь в самом начале
02:06:33
Определите входные данные, введите их
02:06:37
включает все поля в электронном письме с именем пользовательского интерфейса
02:06:42
пароль и подтвердите
02:06:45
пароль, затем создайте форму
02:06:49
компонент и экспортировать Thea this
02:06:53
компонент внутри этого
02:06:55
компонент, который нам нужен, чтобы получить доступ к
02:06:59
следующий сеанс после сеанса с использованием использования
02:07:03
сеанс, импортированный из следующего SL, реагирует
02:07:07
Следующее, что нам здесь нужно, это
02:07:11
параметры запрашиваемой строки
02:07:13
параметры, к которым мы получаем доступ, используя поиск
02:07:16
параметры из следующей косой черты
02:07:20
навигация также нам нужно перенаправить пользователя
02:07:23
после успешного входа в систему или
02:07:26
регистрация, поэтому нам нужен доступ к использованию
02:07:30
роутер из следующего SL
02:07:33
навигация получить URL-адрес обратного вызова от
02:07:36
строка quer в
02:07:39
URL-адрес и форма использования звонка.
02:07:43
из реагирующего крючка
02:07:46
входные данные формы этой формы
02:07:49
имеет тип input и значение по умолчанию
02:07:53
для
02:07:55
имя электронной почты и
02:07:58
пароль и подтверждение пароля пусты
02:08:02
извлечение строки, дескриптор регистра, отправка
02:08:05
и получить значения и сформировать состояние от использования
02:08:09
сформировать хук из реактивного хука
02:08:12
форма, сохраните код, перейдите к следующему
02:08:16
Шаг Определите пользовательскую функцию из реакции
02:08:21
проверьте сеанс, если сеанс и
02:08:24
сессия. пользователь существует, это означает, что мы
02:08:28
уже вошедший пользователь нет
02:08:31
необходимо создать нового пользователя для входа в систему
02:08:34
пользователя, поэтому мы перенаправляем пользователя на
02:08:37
URL обратного вызова, следующий шаг
02:08:41
создание формы отправки при нажатии пользователем
02:08:45
кнопку регистрации после ввода своего
02:08:48
информация, которая нам нужна, чтобы справиться с этим
02:08:51
запросить это
02:08:53
функция, имя функции - форма
02:08:55
отправьте его типа Semimit Handler
02:08:58
импортируйте этот тип из формы реагирования
02:09:02
и данные поступают в эту функцию
02:09:05
введите ввод, это асинхронная функция, которая
02:09:08
принять форму структуры и получить
02:09:12
имя электронная почта
02:09:14
пароль от
02:09:17
это и и при попытке поймать вызов этого
02:09:21
API SL API SL выключить/зарегистрировать, это точно
02:09:27
маршрут, который мы определили
02:09:30
вот метод
02:09:33
опубликовать тип контента
02:09:37
Json и в тело передаем полезную нагрузку
02:09:41
используя json.
02:09:44
тяжко, проверь результат, если он в порядке
02:09:47
красный направляет пользователя на страницу входа и
02:09:51
передайте URL обратного вызова и покажите это
02:09:54
аккаунт сообщения был
02:09:56
создано в противном случае получить
02:10:00
результат и шоу и
02:10:04
через сообщение об ошибке на основе
02:10:08
результат, если есть ошибка, покажите
02:10:11
ошибка при использовании
02:10:14
тост, давайте установим реакцию горячего тоста
02:10:19
вот сайт этого
02:10:22
пакет перейти к
02:10:24
документация, которую нам нужно установить, реагирует
02:10:27
горячий тост перейти к терминалу открыть новый
02:10:30
установка терминала pnpm, горячая реакция
02:10:34
тост, вот и все, следующий шаг будет
02:10:39
компоненты
02:10:42
папка рядом с приложением, перейдите к компонентам
02:10:46
папку и создайте новый новый файл с именем
02:10:51
клиентские провайдеры.
02:10:53
TSX в этом файле создайте
02:10:57
компонент реагирования, например
02:11:00
это имя этого компонента
02:11:03
функция экспорта поставщика клиента по умолчанию
02:11:07
клиент-провайдер принимает детей как
02:11:10
реквизит типа
02:11:13
реагирующий узел, и я возвращаю здесь
02:11:17
пустой контейнер с тостером
02:11:20
и детский тостер является компонентом из
02:11:23
отреагировать на пакет с горячими тостами, взяв этот I
02:11:27
может показывать всплывающее сообщение в
02:11:31
приложение, это компонент на стороне клиента
02:11:35
поэтому я использую клиент use в самом
02:11:38
начало этого файла пора использовать
02:11:42
этот компонент
02:11:45
внутри провайдера. ТСХ
02:11:48
так в провайдере. ТСХ
02:11:51
заворачивать детей
02:11:55
импорт внутреннего поставщика клиента
02:11:59
вот так сохраните код и вернитесь к
02:12:03
форма.
02:12:06
Команда TSX I или контрольное пространство на
02:12:12
Windows и импортировать тост из React Hot
02:12:17
тост
02:12:18
если есть ошибка, вы получите
02:12:20
сообщение об ошибке в виде всплывающего уведомления
02:12:24
сохранение экрана
02:12:26
это, и давайте перейдем к следующему шагу, здесь мы
02:12:29
собираются
02:12:30
форма пользовательского интерфейса реестра
02:12:35
форма сразу после отправки
02:12:38
Обработчик возвращает div с тем же классом
02:12:42
имя в качестве формы входа внутри этого создания
02:12:46
еще один ди с телом карточки с именем класса
02:12:50
заголовок один
02:12:52
зарегистрируйтесь и пришло время создать
02:12:54
первое поле ввода, его имя пользователя, сохраните
02:12:59
код
02:13:01
и заходим в папку регистрации
02:13:05
новая страница файла
02:13:08
сделай TSX, я покажу форму
02:13:14
компонент внутри страницы.
02:13:16
TSX вот это
02:13:19
код, что я сделал, это
02:13:22
для создания компонента реестра это
02:13:27
серверный компонент, установив параметр Sync It
02:13:30
сервер
02:13:31
компонент, и я возвращаю компонент формы
02:13:35
это клиентский компонент из того же
02:13:37
папка это
02:13:40
также можно установить количество экспорта метаданных
02:13:46
метаданные для установки установите заголовок этого
02:13:49
страница для регистрации сохранить
02:13:54
это и здесь нажмите на знак
02:13:58
в я собираюсь создать ссылку для
02:14:02
зарегистрироваться перейти войти
02:14:06
форма в самом начале сразу после
02:14:10
тот
02:14:11
форма создания разработчика, нужна учетная запись, рендеринг
02:14:16
ссылка из
02:14:18
н/
02:14:20
имя класса ссылки
02:14:23
ссылка и адрес - страница регистрации
02:14:27
но мне нужно передать URL обратного вызова
02:14:30
страница регистрации с использованием строки запроса
02:14:34
сохраните код, круто, нужна учетная запись
02:14:37
зарегистрированный нажмите на
02:14:39
если мы получим эту ошибку при импорте
02:14:43
компонент, который требует эффекта от использования в
02:14:45
форма. TSX в реестре
02:14:49
папка, которую нам нужно определить как клиент
02:14:54
компонент
02:14:56
классный регистр и имя подано
02:14:59
давайте создадим пароль электронной почты на
02:15:03
и подтверди пароль иди
02:15:08
обратно в форму. TSX — это прокрутка
02:15:13
вниз сразу после того, как этот разработчик создаст еще один
02:15:17
Разработчик для
02:15:19
электронная почта вот электронная почта
02:15:21
метка поля
02:15:24
электронная почта зарегистрировать электронную почту в ответном крючке
02:15:27
форма требуется и следующая
02:15:32
валидация — это проверка шаблона
02:15:35
электронная почта, если есть ошибка, покажите
02:15:37
ошибка
02:15:38
сообщение сохраните код, чтобы получить
02:15:42
электронная почта в пользовательском интерфейсе, следующий файл — пароль
02:15:47
из того, что у меня есть
02:15:49
пароль и последнее слово здесь — подтверждение
02:15:54
пароль это разница в реестре
02:15:59
функция этого поля I
02:16:04
вызовите, я определяю функцию проверки, которую она получает
02:16:08
значение этого поля ввода и проверьте его
02:16:12
с паролем заполнил это
02:16:15
один, если они не равны друг другу
02:16:19
Я возвращаю этот пароль сообщения об ошибке
02:16:22
должен
02:16:23
соответствие последнему элементу в этой форме является
02:16:26
кнопка, давайте придадим форму регистру кнопки
02:16:31
кнопка установить имя класса на основное отключение
02:16:36
если мы отправляем форму и
02:16:39
если он отправляет, поставьте лайк Spiner
02:16:45
это и если подача будет доведена до конца
02:16:48
покажи спиннер типа
02:16:51
это после этого St создайте
02:16:54
разделитель и визуализировать
02:16:59
У такого div уже есть учетная запись
02:17:02
импортировать ссылку из
02:17:05
nexlink и если у пользователя есть учетная запись
02:17:09
должен быть перенаправлен на страницу входа
02:17:12
сохраните код, ах, вот это
02:17:16
разделитель хорошо, формируем регистр
02:17:19
экран, давайте нажмем на регистрацию без
02:17:22
передача каких-либо данных или мне нужно обернуть их
02:17:26
а
02:17:27
форма сразу после H1
02:17:31
создайте форму и установите отправку в
02:17:35
обработать функцию отправки из хука реакции
02:17:38
форма и передача формы отправки, которую мы создали
02:17:42
здесь как параметр для обработки отправки
02:17:45
функцию, затем переместите
02:17:48
целиком, затем переместите все глубины внутрь
02:17:53
четыре свитка
02:17:57
вниз, выберите всех разработчиков, пока не зарегистрируетесь
02:18:01
кнопка вырезать их и переместить внутрь
02:18:05
сформировать окончательную форму
02:18:09
этого jsx должна быть такой формы
02:18:14
и все входные данные
02:18:16
diff вот форма регистрации, давайте
02:18:20
нажмите на регистрацию, как вы увидите
02:18:22
проверка работает введите имя
02:18:27
пароль электронной почты, давайте введем другой
02:18:31
пароль пароль должен совпадать и
02:18:34
такой же
02:18:35
работает и нажмите
02:18:38
регистр
02:18:40
был создан потрясающий аккаунт, я в нем
02:18:43
страницу входа и введя
02:18:48
пароль и адрес электронной почты и нажмите «подписать»
02:18:51
в Я войду в систему и у меня есть
02:18:55
пользователь Джейн здесь, прежде чем закончить это
02:18:59
урок, давайте выйдем из системы и пойдем регистрироваться
02:19:02
страницу и попробуйте создать дубликата пользователя
02:19:05
и нажмите «Зарегистрироваться», вот ошибка
02:19:08
сообщение об ошибке дублирования ключа для пользователей
02:19:13
индексный адрес электронной почты Джейн дублируется
02:19:18
мы можем совершить эту ошибку гораздо чаще
02:19:20
лучше пойти в форму. TSX и зарегистрируйтесь
02:19:24
папка и в подвохе
02:19:26
блокировать
02:19:28
Определить ошибку, равную
02:19:31
если
02:19:33
ошибка.
02:19:37
сообщение существует и
02:19:42
ошибка
02:19:44
сообщение сделать индекс
02:19:50
e1100 это дубликат
02:19:54
ключ равен нулю, это означает, что если
02:19:58
сообщения начинаются с этого
02:20:04
нить
02:20:07
затем
02:20:11
затем напишите письмо
02:20:14
является
02:20:16
дублировать, иначе показать ошибку
02:20:19
сообщение
02:20:21
как это
02:20:23
использует этот код и
02:20:26
тогда, если ошибка покажет ошибку, в противном случае
02:20:31
сообщение об ошибке сохраните код и нажмите
02:20:34
зарегистрируйтесь, круто, это сообщение очень важно
02:20:38
лучше отлично мы успешно реализовали
02:20:41
регистрация пользователя в этом
02:20:43
урок до следующего урока
02:20:46
пока-пока
02:20:48
[Музыка]
02:20:50
в этом уроке мы собираемся создать
02:20:52
Мастер оформления заказа и реализация доставки
02:20:56
страница адреса и способа оплаты, позвольте нам
02:20:59
начните с добавления типа адреса доставки в
02:21:03
модель заказа. Модель открытого ордера TS. ТС в
02:21:07
папку моделей и добавьте адрес доставки
02:21:12
введите и экспортируйте его для адреса доставки
02:21:15
у нас есть полное имя, добавьте адрес, улицу
02:21:18
адрес Почтовый индекс города и страны все
02:21:22
типа А
02:21:23
Строка следующего шага указана в карточке использования.
02:21:28
сохранить крючок, открыть этот файл в хуках
02:21:31
папка в
02:21:33
live и для корзины нам нужно добавить два новых
02:21:39
Поля способ оплаты типа строки
02:21:43
и адрес доставки типа доставки
02:21:46
адрес, импортируйте его из заказа
02:21:52
смоделируйте и приступайте к первоначальному
02:21:54
укажите сразу после общей цены в первоначальной
02:21:58
Государство установило значение метода оплаты для PayPal
02:22:02
метод оплаты M по умолчанию — PayPal.
02:22:05
и адрес доставки в пустые строки
02:22:08
для всех
02:22:10
затем перейдите в службу использования карт и
02:22:15
Добавить новое
02:22:17
функции
02:22:19
для
02:22:21
сохранение адреса доставки и оплаты
02:22:24
метод, который я прокручиваю вниз сразу после
02:22:27
функция уменьшения создать новую функцию
02:22:31
установите имя для сохранения адреса доставки как
02:22:35
параметр получить адрес доставки типа
02:22:37
адрес доставки и позвонить, чтобы установить состояние
02:22:41
объект магазина карт, затем передайте доставку
02:22:45
значение адреса в качестве параметра для установки
02:22:49
состояние, поэтому мы здесь обновили
02:22:53
адрес доставки в зависимости от стоимости
02:22:56
мы переходим к этой функции, мы используем это
02:22:59
функция в адресе доставки для сделать
02:23:03
то же самое для сохранения способа оплаты с использованием
02:23:07
этот
02:23:08
функция и перейдите к созданию оформления заказа
02:23:11
bizard, мы собираемся создать пользовательский интерфейс
02:23:15
компонент, показывающий шаги оформления заказа
02:23:19
это идет в папку компонентов, щелкните правой кнопкой мыши
02:23:23
новый
02:23:24
получение файла
02:23:26
шаги.
02:23:28
TSX, вот код для этапов оформления заказа
02:23:31
Компонент Определите этапы оформления заказа и
02:23:34
Экспортировать по умолчанию это
02:23:38
компонент входных реквизитов для этого
02:23:40
компонент является текущим ток показывает
02:23:43
текущее состояние или текущий шаг по умолчанию
02:23:47
внутри ноль, что мы сформировали UL
02:23:51
неупорядоченный список и используйте класс шагов
02:23:56
из пользовательского интерфейса Daisy, внутри которого определяется
02:24:01
массив элементов списка для отображения в виде шагов
02:24:05
первый шаг — вход в систему, второй
02:24:07
адрес доставки третий платеж
02:24:10
метод и последний заказ
02:24:14
преобразовать каждое строковое значение в набор An Li
02:24:20
ключ к тому, чтобы сделать их уникальными и
02:24:23
установите имя класса на шаг, но если оно актуально
02:24:28
состояние больше, чем индекс, сделайте это
02:24:33
основной, поэтому он будет активным
02:24:36
в противном случае сделайте это как
02:24:40
деактивирован как обычно, это означает, что мы
02:24:43
не дошел до этого шага
02:24:45
но в качестве значения отображается строковое значение
02:24:50
внутри элемента списка, и вот мы здесь, мы
02:24:53
можно использовать этапы оформления заказа как компонент
02:24:57
на других страницах перейдем к следующему шагу
02:25:01
и создайте форму адреса доставки, перейдите по ссылке
02:25:06
щелкните правой кнопкой мыши на новой папке и доставке
02:25:12
внутри этого создайте новую форму файла
02:25:18
TSX в этом файле создает компонент формы
02:25:22
и
02:25:24
Экспортируйте компонент внутри этого
02:25:29
импортировать использование маршрутизатора из следующего SL
02:25:32
навигация, нам нужно перенаправить пользователя так
02:25:35
нам нужно получить доступ к объекту маршрутизатора
02:25:38
от использования крюка маршрутизатора, а затем вызова использования карты
02:25:45
обслуживание и получите
02:25:47
метод безопасного адреса доставки и
02:25:50
перевозки
02:25:51
состояние адреса от
02:25:55
zustand затем вызовите форму использования из реакции
02:25:59
Форма крючка и тип адреса доставки
02:26:03
из заказа
02:26:05
модель как тип данных этой формы для
02:26:09
значение по умолчанию делает все из них пустыми
02:26:13
строка во всех полях адреса доставки
02:26:17
Следующий шаг — заполнение значения по умолчанию для
02:26:22
такие адреса, как
02:26:24
это в эффекте использования, импортированном из
02:26:28
Реагировать на заданное значение из формы реагирования
02:26:33
заполните полное имя fi на основе значения
02:26:38
адреса доставки в карточке использования
02:26:41
сервисный крючок сделайте то же самое для других
02:26:45
поля, давайте перейдем к следующему шагу и создадим
02:26:49
функция отправки формы, это тип submit
02:26:53
Обработчик, импортированный из формы реагирования
02:26:56
передать общий тип в службу доставки
02:27:00
адрес и внутри него мы называем Safe
02:27:03
адрес доставки и вставьте значения в
02:27:07
форма как параметр этой функции
02:27:10
затем перенаправить пользователя на следующую страницу
02:27:13
что такое оплата
02:27:14
здесь я собираюсь создать новый
02:27:18
компонент внутри компонента формы, это
02:27:22
сформировать входной компонент, это реакция
02:27:24
компонент принимает идентификатор входного имени
02:27:29
требуется ввод и шаблон для
02:27:33
проверьте, что идентификатор типа данных является ключом
02:27:37
адрес доставки, имя, строка обязательна
02:27:41
является необязательным логическим значением и шаблоном
02:27:44
необязательное правило проверки значения типа
02:27:47
из формы реагирования на форму реагирования на форму и
02:27:54
настроить регулярное выражение как
02:27:57
интерфейс как общий тип
02:28:01
для этого
02:28:03
введите то, что я собираюсь вернуть сюда, это
02:28:06
div, содержащий метку поля ввода
02:28:10
и сообщение об ошибке на основе
02:28:14
значения, переданные мимо
02:28:17
реквизит для ввода формы
02:28:20
компонент, прокрутите вниз, давайте перейдем к
02:28:23
возвращение
02:28:25
тот
02:28:27
компонент, давайте перейдем к части «Возвращение»
02:28:30
для формирования пользовательского интерфейса этого компонента в The
02:28:33
Возвратная часть создать
02:28:35
Мастер оформления визуализации Dev внутри Dev
02:28:40
импортирован из папки компонентов
02:28:43
текущее состояние таково, это означает, что мы
02:28:46
находятся в
02:28:47
адрес доставки Состояние создания разработчика
02:28:52
мастер после оформления заказа, как и другие разработчики
02:28:56
для входа и регистрации мы делаем разработку
02:29:01
Выравнивание по центру и небольшая ширина тогда
02:29:06
создать еще один div, установить имя класса на
02:29:08
тело карты для создания
02:29:10
отступы добавить первый заголовок к доставке
02:29:14
адрес и создайте такую ​​форму
02:29:18
внутри формы использовать компонент ввода формы
02:29:22
что мы определили
02:29:24
здесь
02:29:25
и установите идентификатор имени и правила проверки.
02:29:32
это очень просто создать для ввода
02:29:35
используя это
02:29:36
компонент в конце концов создаст div для
02:29:41
сформируем кнопку для следующего шага, давайте воспользуемся
02:29:47
компонент формы внутри страницы. ТСХ
02:29:51
Внутри папки доставки щелкните правой кнопкой мыши страницу.
02:29:55
TSX, этот код очень прост, как знак
02:29:58
на странице и зарегистрируйтесь, установите заголовок страницы
02:30:01
использование метаданных экспорта констант для доставки
02:30:05
адрес и сделать это
02:30:08
Компонент и экспортная доставка по умолчанию
02:30:12
адресная функция как асинхронная функция
02:30:14
потому что это серверный компонент и
02:30:16
компонент формы возврата, который является клиентом
02:30:20
компонент сохранить
02:30:22
код Давайте проверим
02:30:25
результат перейти к
02:30:28
домашняя страница выбрать товар добавить в корзину
02:30:32
проверять
02:30:33
выход администратора в примере входа с 1 по 6 вход
02:30:38
в том виде, в котором TSX в доставке
02:30:42
папку нам нужно сделать клиентом
02:30:45
компонент
02:30:47
в карточке использования
02:30:48
сервис, чтобы избавиться от этой ошибки, перейдите к
02:30:51
воспользоваться карточным обслуживанием и
02:30:54
добавить платеж
02:30:56
способ и доставка
02:30:58
адрес, который нам нужен
02:31:00
извлечь их из C для хранения
02:31:04
функционировать как
02:31:07
все в порядке, мы не передали никакой ошибки
02:31:11
вход пользователя и мы приступаем к доставке
02:31:13
адрес, мы готовы получить доставку
02:31:16
адрес здесь отлично, давайте проверим, введите
02:31:20
адрес и нажмите
02:31:23
далее мы находимся на странице оплаты мы
02:31:26
не реализовал эту страницу, поэтому мы получаем 404
02:31:30
ошибка, но если я вернусь и обновлю как
02:31:34
ты видишь
02:31:36
данные были сохранены в доставке
02:31:39
адрес для оформления оплаты
02:31:44
страница метода
02:31:47
вот план создания формы в
02:31:49
оплата
02:31:51
папка перейти вперед справа
02:31:54
нажмите новую папку оплата новая
02:31:59
форма файла.
02:32:02
TSX в форме. TSX создать реакцию
02:32:05
компонент и экспортировать файл
02:32:08
этот
02:32:09
компонент и внутри него получите
02:32:12
доступ к маршрутизатору с помощью использования маршрутизатора в
02:32:16
следующий /
02:32:18
навигация получить доступ для сохранения платежа
02:32:22
способ оплаты и доставка
02:32:24
адрес от службы использования карт
02:32:27
перехват создания состояния для выбранного платежа
02:32:32
метод, использующий состояние пользователя из
02:32:36
реагировать и определять функцию отправки дескриптора
02:32:39
это основная функция и дескриптор определения
02:32:43
представлять на рассмотрение
02:32:45
функция предотвращает обновление страницы с помощью
02:32:47
звоню эл. предотвратить ошибку, сохранить
02:32:51
способ оплаты, выбранный пользователем в
02:32:54
Пользовательский интерфейс и перенаправление пользователя на «Следующий шаг»
02:32:57
который размещается заказ также в использовании
02:33:00
эффект, импортированный из реакции, если у нас есть
02:33:04
адреса нет
02:33:06
нужно, если в списке нет адреса
02:33:09
объект адреса доставки, который нам нужен
02:33:12
перенаправить пользователя на предыдущий шаг
02:33:15
в противном случае установите выбранный платеж
02:33:18
метод, основанный на значении в используемом
02:33:21
перехватчик обслуживания карты, если нет значения
02:33:24
использовать PayPal как
02:33:26
по умолчанию хорошо, давайте перейдем к «Возвращению»
02:33:29
часть этого
02:33:31
компонент создает Dev внутри этого
02:33:35
визуализировать оформление заказа, импортированное из
02:33:39
мастер оформления заказа. TSX в компонентах
02:33:44
папка после этого
02:33:47
создать
02:33:48
Центр разработки
02:33:51
выровнен маленький
02:33:53
мы внутри этого создаем корзину
02:33:56
тело и в теле корзины отображают заголовок
02:34:02
один на способ оплаты сразу после
02:34:06
заголовок один: создайте форму для отмены отправки
02:34:10
вызвать функцию отправки дескриптора и выполнить рендеринг
02:34:15
три
02:34:17
div с использованием функции карты в этом массиве
02:34:22
за полосу PayPal и наложенный платеж
02:34:25
мы собираемся сформировать по три разработчика для каждого разработчика
02:34:28
имеет ключ, равный платежу, чтобы сделать это
02:34:31
уникальный ярлык, чтобы показать ярлык и
02:34:35
переключатель ввода, чтобы получить выбранный
02:34:39
ценность пользователя, если это так, если
02:34:44
выбранный способ оплаты равен
02:34:46
метод оплаты в этом массиве сделайте его как
02:34:49
выбирается путем установки проверенного значения
02:34:53
вход
02:34:55
элементы, когда пользователь
02:34:57
изменено на неизмененное, мы обновляем
02:35:01
выбранный способ оплаты выбранным
02:35:03
значение в списке после этого создайте
02:35:08
div в div отображает тип кнопки
02:35:12
отправить, чтобы отправить, выберите это значение
02:35:17
к
02:35:18
сервер также освобождает место для пользователя
02:35:22
к предыдущему шагу с помощью кнопки для
02:35:26
снимите кнопку вызова r. вернуться, чтобы пойти в
02:35:30
Доставка Государственная доставка
02:35:33
страница отличная, давайте воспользуемся этой формой в
02:35:37
Страница создания папки со способами оплаты. ТСХ
02:35:41
и, как и импорт других компонентов страницы
02:35:44
сформировать из той же папки метаданные
02:35:47
из следующего установите заголовок страницы для оплаты
02:35:50
метод и отобразить форму оплаты
02:35:54
компонент страницы сохраните код, нажмите
02:36:00
следующий ага, нам нужно сделать этот компонент
02:36:04
клиентский компонент
02:36:06
используйте клиент, и вот мы здесь, мы находимся
02:36:10
выбранный способ оплаты оплата
02:36:13
метод - Paypal, давайте сделаем это стра
02:36:16
нажмите «Далее», страницы размещения заказа нет
02:36:20
нажмите назад еще раз дальше и как вы
02:36:24
увидите, что он сохраняет выбранный способ оплаты
02:36:29
даже если я обновлю выбранную страницу
02:36:33
ценность, сэкономленная в виде отличного мы
02:36:37
реализован мастер оформления заказа, и у нас есть
02:36:40
две страницы, чтобы получить адрес доставки и
02:36:43
способ оплаты от пользователя, мы готовы
02:36:46
для следующего шага - размещения заказа
02:36:49
пока не станет меньше солнца
02:36:53
пока, на этом уроке мы собираемся
02:36:56
осуществить размещение заказа, прежде всего мы
02:36:59
нужно создать модель заказа в моделях
02:37:02
папка у нас уже есть модель заказа. ТС
02:37:06
здесь нам нужно определить порядок esema
02:37:10
схема mongos es прежде всего импортируется
02:37:13
mongos, а затем Определить схему порядка, например
02:37:17
это новый объект схемы Монго
02:37:21
в качестве параметра функции схемы мы передаем
02:37:24
объект, содержащий поля порядка
02:37:29
схема, первое поле — пользователь, и это
02:37:32
как внешний ключ к пользовательской модели
02:37:36
тип — это идентификатор объекта, он ссылается на пользователя
02:37:40
модель, и это необходимо, чтобы, когда пользователь
02:37:43
создать новый заказ, который мы заполняем пользователем
02:37:47
идентификатор пользователя в следующей модели заказа
02:37:50
это элементы, это массив элементов заказа
02:37:54
для каждой позиции заказа мы сохраняем товар
02:37:58
Идентификатор этого элемента — это ссылка на
02:38:01
название модели продукта, номер продукта
02:38:05
количество продукта этого продукта в
02:38:08
Заказать изображение товара и цену
02:38:12
продукт следующий fi — это адрес доставки, это
02:38:15
как тип данных, который мы уже создали в
02:38:18
предыдущий урок мы сохраняем полный адрес
02:38:22
полное имя, почтовый адрес, почтовый адрес города
02:38:25
код и страна адреса доставки
02:38:29
для заказа следующее поле — оплата
02:38:32
метод это строковый платеж типа A
02:38:35
в результате это объект, содержащий идентификатор
02:38:38
статус и адрес электронной почты плательщика мы
02:38:41
заполните это при платеже и далее
02:38:45
заполнить информацию о ценах, включить цену товаров
02:38:48
налог на стоимость доставки и общая стоимость всех
02:38:51
номера типа, и они необходимы
02:38:54
следующий - оплачен, статус - это ложь
02:38:58
и по умолчанию ему присваивается статус
02:39:01
false также нам нужно сохранить платеж
02:39:05
дата с использованием этой даты заполнения и доставки
02:39:08
используя доставленное в fi в опциях
02:39:12
В этой схеме у нас есть отметка времени, равная true, так что
02:39:15
сохраняем создание и последнее обновление
02:39:19
дата каждой записи в модели заказа
02:39:24
после создания схемы заказа пришло время
02:39:27
создать модель заказа, если у нас уже есть
02:39:30
модель заказа, используйте ее, иначе создайте эту
02:39:34
Объектные монго сначала проходят модель
02:39:38
параметр имя модели и второй
02:39:41
параметр эс схемы нужной нам модели
02:39:44
для экспорта модели заказа по умолчанию в
02:39:47
вариант последнее, что есть в этом файле
02:39:51
создание типа для модели заказа, это
02:39:54
нравится этот порядок типа экспорта, и мы используем
02:39:58
это для проверки типа данных заказа в
02:40:01
другие файлы, первый файл — это идентификатор, это
02:40:06
mongos — идентификатор mongodb типа A String
02:40:10
пользователь и в пользователе у нас есть имя
02:40:12
введите A String items, это массив
02:40:16
заказ товаров адрес доставки оплата
02:40:18
результат способа оплаты не является обязательным и
02:40:22
цены, статус доставки и оплаты
02:40:26
давайте перейдем к следующему шагу, который он создает
02:40:29
API-обработчик дороги для сохранения заказа
02:40:34
для создания заказа в базе перейдите по ссылке
02:40:38
API приложения щелкните правой кнопкой мыши новые заказы на папку
02:40:43
внутри этого нового файлового маршрута. ТС, что мы
02:40:48
нужно сделать здесь, это создать пост
02:40:51
функцию и экспортируйте ее в эту функцию
02:40:55
должен быть обернут в off Let’s Import
02:40:58
выключить из папки live и в выключенном состоянии мы
02:41:03
передайте такую ​​​​асинхронную функцию, которая
02:41:06
принять запрос в качестве параметра, имея
02:41:10
это мы можем проверить запись. пошел посмотреть, если
02:41:14
пользователь отключен или нет, потому что
02:41:17
этот API должен запускаться авторизованными
02:41:21
пользователь для проверки аутентификации использует это
02:41:24
код, если запись. выключено — ошибка возврата null
02:41:28
сообщение при авторизации установило статус 401
02:41:33
в противном случае получите пользователя из записи. мимо
02:41:37
имея пользователя, мы готовы создать заказ
02:41:40
используя этот код, создатель, я блокирую блок
02:41:44
внутри этого получите доступ к запросу
02:41:48
полезная нагрузка путем вызова Rec. Json вставил это
02:41:52
полезная нагрузка подключается к базе данных, использует БД
02:41:56
подключитесь из активной папки, затем позвоните и найдите
02:42:01
метод импорта продукта модели продукта
02:42:05
модель из папки Models что мы
02:42:07
собираюсь сделать здесь, чтобы узнать цену
02:42:11
товары в позициях заполнить заказ
02:42:15
товары, которые пользователь добавил в покупки
02:42:18
корзину и убедитесь, что цены не
02:42:22
манипулируется пользователем в клиенте, поэтому мы
02:42:26
получить истинную цену в базе данных и
02:42:29
затем поместите их в цены на продукты БД
02:42:33
в следующей строке обновляем цены
02:42:38
исходя из цены в базе нет
02:42:41
цена, переданная пользователем от клиента
02:42:44
потому что пользователь
02:42:45
может ли хакер также изменить цены
02:42:49
мы устанавливаем продукт, указанный в идентификаторе
02:42:53
потому что идентификатор содержит идентификатор продукта
02:42:56
и у нас нет идентификатора в модели заказа
02:43:01
у нас есть продукт, основанный на этой области, и
02:43:04
удалить идентификатор из позиции заказа, следующий шаг
02:43:08
является
02:43:09
расчет цен на основе заказа БД
02:43:14
элементы, давайте определим эту функцию в
02:43:17
в самом начале я определил цены Cal
02:43:21
принять позицию заказа типа позиция заказа
02:43:24
массив, импортированный из модели заказа, и вызов
02:43:28
второй раунд из
02:43:31
.ts для расчета стоимости товара, который мы называем
02:43:35
Функция сокращения для позиции заказа и суммирования
02:43:39
Цена товара умножается на товар. количество
02:43:43
затем рассчитайте стоимость доставки, стоимость налога
02:43:45
и общую стоимость, а затем верните их, которые мы используем
02:43:49
эта функция здесь и расчет цен
02:43:53
на следующем этапе нам нужно создать новый
02:43:56
модель заказа с использованием модели заказа из
02:44:01
mongos импортирует модель заказа из заказа
02:44:04
модель. TS передает данные полезной нагрузки
02:44:08
содержит данные от службы доставки
02:44:11
адрес, который пользователь ввел в форму
02:44:13
способ оплаты, выбранный пользователем в
02:44:15
переключатель здесь и передайте идентификатор пользователя
02:44:21
для пользователя модели заказа мы
02:44:24
готов создать новый заказ по телефону
02:44:26
сохраните метод в New Order, и вот мы
02:44:31
есть ли у нас созданный порядок, который нам нужен?
02:44:34
верните его обратно во внешний интерфейс, и если
02:44:37
есть ошибка
02:44:39
показать сообщение об ошибке возврата, вот и все
02:44:42
о создании обработчика маршрута для размещения
02:44:47
Следующий шаг заказа — установка SWR
02:44:51
это крючок для получения данных
02:44:55
мы собираемся использовать этот пакет для получения
02:44:58
данные из серверной части в клиенте, откройте
02:45:02
новый запуск терминала pnpm install s SWR
02:45:06
вот и все, перейдем к следующему шагу и
02:45:09
изменить поставщика клиентов, к которому нам нужно обратиться
02:45:13
поставщик клиента и оберните компонент
02:45:16
конфигурация inwr для доступа
02:45:20
башня во всех местах проекта
02:45:24
заменить пустой контейнер на SWR
02:45:28
настроить и переместить тостер и детей
02:45:32
внутри s SWR удалите это и сохраните
02:45:36
код и импортировать конфигурацию Sr из SWR для
02:45:42
реквизит для этого компонента у нас есть ценность
02:45:46
значение содержит объект, у нас есть два
02:45:49
функции в этом объекте при ошибке, если
02:45:52
произошла ошибка, поднимите сообщение об ошибке
02:45:54
Тост об импорте сообщения из React Hot
02:45:57
тост и я пойду на вечеринку
02:46:01
вызвать метод выборки из nextjs и
02:46:06
передать ресурс в качестве первого параметра
02:46:09
и инициализируем второй параметр для выборки
02:46:13
функция получает ответ, и если это
02:46:17
не в порядке из-за ошибки в противном случае
02:46:20
вернуть результат, сохранить код и
02:46:24
прямо перед возвратом. Определите эффект использования.
02:46:28
и добавьте в прослушиватель для видимости
02:46:32
внесите изменения в документ и сосредоточьтесь на
02:46:35
окно вкладки браузера, если есть
02:46:38
изменить магазин обновлений вызова, что нам делать
02:46:41
здесь нужно перезагрузить или восстановить данные
02:46:46
в корзине магазина давайте импортируем использование
02:46:49
эффект от реакции и магазина корзин от
02:46:52
используйте хранилище карточек, имея этот крючок, когда
02:46:57
ориентируемся на окно стоимости корзины
02:47:01
будет обновлен, скажем, у меня есть два
02:47:04
окно проекта в браузере и
02:47:08
в одном окне увеличиваю количество позиций
02:47:13
когда я подхожу к другому окну
02:47:15
автоматически значение на карте будет
02:47:18
обновиться, вызвав эту функцию так
02:47:22
мы всегда синхронизируемся во вкладках браузера
02:47:26
проект отличный, мы готовы к
02:47:29
Следующий шаг — создание компонента формы
02:47:33
навести порядок во внешнем интерфейсе, давайте
02:47:36
создать заказ на размещение во внешнем интерфейсе
02:47:39
щелкните правой кнопкой мыши новую папку, разместите заказ
02:47:42
внутри этой новой формы файла. TSX нравится
02:47:46
всегда создавайте форму как функцию стрелки
02:47:50
и экспортируйте полную форму внутри этого
02:47:53
получить доступ к роутеру с помощью use
02:47:56
маршрутизатор из следующей навигации получить доступ
02:47:59
к информации о корзине
02:48:02
импортировано из сервисного крючка карты использования и
02:48:06
Определите четкую функцию внутри карты использования
02:48:09
сервис H после увеличения уменьшить безопасно
02:48:12
доставка и безопасная оплата
02:48:15
ясно, что он делает, это очищает
02:48:17
товары в корзине покупок Определите это так
02:48:21
что мы сделали, так это установили пустые элементы
02:48:25
массив, поэтому мы удаляем все элементы в
02:48:28
корзина, чтобы здесь не было ошибки
02:48:31
сохраните код и вызовите использование мутации SWR
02:48:35
импортирован из мутации SWR SL вот так
02:48:41
использовать мутацию S SWR — это ловушка для мутации
02:48:46
данные на серверной стороне, вызвав триггер
02:48:49
функцию, которую мы переименовываем триггер, чтобы разместить
02:48:52
порядок и мы имеем доступ к состоянию
02:48:56
вызов этого API с использованием мутирует, мы
02:48:59
переименуйте его, поместив в этот крючок
02:49:03
первый параметр — это адрес API, который он использует.
02:49:07
/ API SL заказывает SL Mine, имея это
02:49:11
API, когда у нас есть новый заказ на этот API
02:49:16
будет повторно проверен и добавлен новый
02:49:19
Порядок для этого второго параметра API является
02:49:24
асинхронная функция, которая принимает URL как
02:49:27
параметр нам не нужен этот URL какой
02:49:30
мы собираемся позвонить в Fitch
02:49:33
функцию по этому адресу мы уже
02:49:36
создал этот API в маршруте. ТС в
02:49:40
папка заказов второй параметр
02:49:43
fch — это параметры метода этого API
02:49:46
вызов — это приложение для установки заголовка сообщения
02:49:50
Json и как тело передают всю информацию
02:49:54
корзина покупок, затем получите результат Json
02:49:58
поместите это в данные, если есть, если
02:50:01
все в порядке, очисти карту
02:50:04
потому что мы создали мы создали заказ
02:50:07
на основе предметов и нет необходимости
02:50:09
чтобы эти товары были в корзине
02:50:12
и тост, импортированный из горячего тоста, это
02:50:17
сообщение, затем перенаправить пользователя на заказ
02:50:20
Подробности
02:50:21
страница, если есть ошибка, покажите ошибку
02:50:25
сообщение хорошее, мы готовы использовать их в
02:50:28
следующие шаги после этого крючка нам нужны
02:50:32
вызвать эффект использования из реакции в
02:50:35
функция эффекта использования, если способ оплаты
02:50:38
не указанный пользователь перенаправления на
02:50:40
страница оплаты, если количество позиций в
02:50:43
Корзина покупок — это нулевое перенаправление пользователя
02:50:46
на домашнюю страницу этот компонент является клиентом
02:50:50
компонент, и я не собираюсь получать
02:50:52
ошибка отображения клиента и сервера. Я
02:50:56
определение смонтированного состояния с использованием состояния пользователя
02:50:59
по умолчанию это ложь и используется
02:51:02
эффект, я установил для него значение true, если это не так
02:51:05
установлен возврат пустого контейнера, имея
02:51:10
этот код, этот компонент будет
02:51:12
отображаются только на клиенте и
02:51:15
сервер и клиент на начальном этапе
02:51:18
рендеринг получает то же значение, поэтому я не
02:51:22
получите ошибку не соответствующего клиента и
02:51:26
результат сервера, не забудьте добавить использование
02:51:29
клиент в самом начале этого
02:51:32
компонент и давайте продолжим после этого
02:51:37
здесь я собираюсь вернуть div внутрь
02:51:40
который отображает мастер оформления заказа, и мы
02:51:44
на четвертом этапе после оформления заказа
02:51:48
Мастер рендеринга Dev и создания четырех
02:51:53
столбцы с использованием среднего устройства GED четыре
02:51:56
столбцы G четыре и поля по вертикали
02:51:59
четыре внутри этого Dev создают еще одного Dev
02:52:02
и занимают три из четырех долей
02:52:06
столбцы вставьте сюда первую карту
02:52:10
создать разработчика с карточкой имени класса
02:52:13
Название карты тела-это адрес доставки и
02:52:16
здесь мы собираемся просмотреть доставку
02:52:19
адрес в корзине после этого
02:52:22
создать ссылку, импортировать ее из следующего /link
02:52:25
и перенаправить пользователя на страницу доставки
02:52:28
изменить адрес доставки после этого
02:52:32
div создать еще один div для оплаты
02:52:36
метод после создания метода оплаты
02:52:38
еще один разработчик для рендеринга товаров для покупок
02:52:42
table установите имя имени класса в table
02:52:45
в заголовке Т создайте элементы из трех столбцов
02:52:49
количество и цена и в теле таблицы
02:52:52
вызовите функцию карты для элементов из
02:52:55
корзину покупок и отображать каждый товар в
02:52:58
импорт ввода строк таблицы
02:53:02
изображение с Nexus, вот такое изображение
02:53:07
позвольте мне закрыть этого разработчика и после этого
02:53:10
столбец создайте еще один столбец, подобный этому
02:53:13
создать Dev внутри, который создаст еще один
02:53:16
Разработчик установил имя класса для карты и базы PG.
02:53:19
300 внутри, которые создают тело карты, чтобы сделать
02:53:23
отступы и добавьте второй заголовок для заказа
02:53:27
сводная форма UL сделать пространство вертикально
02:53:31
до трех для показа первого элемента списка
02:53:35
цена товара, цена второго налога
02:53:37
стоимость доставки и общая стоимость в
02:53:40
последний элемент списка создает кнопку и когда
02:53:44
пользователь нажимает кнопку под названием
02:53:46
разместить заказ разместить заказ — это триггер
02:53:51
функция от использования мутации SWR и путем
02:53:54
вызывая эту функцию, этот API будет
02:53:57
вызывается и будет создан новый заказ
02:54:00
на сервере также, если размещение верно
02:54:04
покажи спиннер и подпись к этому
02:54:07
кнопка - разместить заказ, давайте воспользуемся этим
02:54:11
то, что нам нужно сделать, это создать новые
02:54:13
страница файла. DSX и, как всегда, устанавливаю
02:54:19
заголовок страницы, чтобы разместить заказ и экспортировать
02:54:22
error Разместить упорядоченный компонент страницы как
02:54:26
асинхронная функция внутри которой просто возвращает
02:54:29
для сохранения кода заходим на карту
02:54:33
процесс проверки адреса доставки
02:54:36
способ оплаты и вот мы здесь
02:54:38
В месте заказа адрес доставки может
02:54:42
редактируется порядок размещения может быть изменен и
02:54:44
Позиции заказа можно обновить, я просто нажимаю
02:54:49
на редактировании, чтобы я мог изменить его,
02:54:53
проверьте адрес доставки на следующем шаге и
02:54:57
оно обновлено, здесь есть сводка заказов
02:55:01
и когда я нажимаю на него, заказываю место
02:55:05
успешно, и я буду перенаправлен на
02:55:08
на странице заказа я получаю ошибку 404, потому что я
02:55:13
еще не реализовал это в следующем
02:55:15
урок мы реализуем страницу сведений о заказе
02:55:19
но то, что мы сделали, это навели порядок в
02:55:23
сервер до этого урока
02:55:29
пока-пока на этом уроке мы собираемся
02:55:31
создать страницу сведений о заказе, начнем с
02:55:35
создание обработчика дороги для возврата
02:55:39
данные заказа на основе идентификатора заказа, поэтому, когда
02:55:44
когда пользователь уходит, когда пользователь вызывает заказ SL API
02:55:48
слайд заказа мы возвращаем заказ
02:55:52
подробности, если пользователь прошел аутентификацию для выполнения действия
02:55:56
что нам нужно перейти в папку заказов API
02:55:59
Заказы API и создание динамического маршрута здесь
02:56:05
новая папка внутри квадратной скобки, поместите идентификатор
02:56:10
и в папке ID создайте r. ТС для
02:56:14
создать обработчик маршрута, код для
02:56:17
вернуть данные заказа на основе идентификатора заказа
02:56:21
это очень просто, вам нужно импортировать БД
02:56:24
подключите заказную модель и прочь от вранья
02:56:28
минусы экспорта папок получаются, потому что API
02:56:33
метод - получить и обернуть вашу функцию API
02:56:39
наизнанку, завернув внутрь
02:56:43
аутентифицировать
02:56:44
функция, использующая это условие, если r.
02:56:50
выключено — ноль, возврат неавторизован
02:56:54
в противном случае подключитесь к идентификатору базы данных в
02:56:57
URL-адрес и верните этот заказ в
02:57:01
то, что мы сделали, это схватили все
02:57:04
параметры и структура rre и
02:57:08
параметры из параметров в async
02:57:12
функция сохранить код
02:57:14
перейдите к следующему шагу, это создание заказа
02:57:19
Компонент сведений внутри папки с идентификатором заказа
02:57:24
перейти вперед, щелкните правой кнопкой мыши новый порядок папок
02:57:30
внутри этого создайте динамический маршрут для
02:57:33
идентификатор заказа новый идентификатор папки квадратная скобка
02:57:38
и здесь создайте компонент сведений о заказе
02:57:41
подробности. ТСХ здесь
02:57:44
мы экспортируем функцию деталей заказа theault
02:57:47
он принимает идентификатор заказа и идентификатор клиента PayPal
02:57:51
все они вводят строку в это
02:57:54
вызов компонента использует сеанс для доступа к
02:57:58
сеанс и вызов используют перехватчик S SWR
02:58:03
импортирован из SWR и передайте этот URL/
02:58:07
API SL заказывает идентификатор заказа, делая это, мы
02:58:12
иметь данные
02:58:14
и если при получении произошла ошибка
02:58:17
в этом API ошибку не забудьте установить
02:58:21
компонент как клиент
02:58:24
компонент и перейдем к следующему шагу, если
02:58:27
есть ошибка, покажите сообщение об ошибке, если
02:58:30
нет данных, показывающих статус загрузки, поэтому
02:58:35
в этой строчке у меня все в порядке
02:58:38
данные и нет ошибок в структуре
02:58:41
информация о заказе, давайте оформим заказ
02:58:46
данные возвращают Dev в рендере dev
02:58:51
идентификатор заказа в первом заголовке сразу после этого
02:58:55
создайте столбцы сетки Dev, используя 4, чтобы
02:58:59
создайте четыре столбца и внутри них
02:59:02
создать Dev, занимающий три столбца
02:59:06
внутри этого Dev создайте еще один набор Dev
02:59:10
имя класса в корзину для формирования корзины
02:59:13
внутри этого создайте еще один класс набора разработчиков
02:59:16
имя в тело карты, чтобы создать дополнение
02:59:20
этот Дев в этом Деве добавляет второй заголовок к
02:59:23
адрес доставки и показать доставку
02:59:25
адрес, если доставлено, верно показать
02:59:29
это сообщение зеленого цвета доставлено по адресу
02:59:34
это эта дата и время, если не показывать в
02:59:39
красный нет
02:59:41
доставлено отлично после создания этой карты
02:59:44
другая карта для способа оплаты, например
02:59:49
это и после этого пора рендерить
02:59:52
заказать предметы, создать карту набора разработчиков и BG
02:59:57
base 300 установить верхнюю границу до четырех внутри
03:00:01
которые создают другое имя класса набора разработчиков
03:00:05
к телу карты и переходу к элементам
03:00:10
это позиции заказа. Создайте таблицу с
03:00:14
количество и цена товаров в трех столбцах
03:00:17
и в функции карты вызова тела таблицы включена
03:00:21
элементы и преобразовать каждый элемент в таблицу
03:00:24
элемент заказа на импорт строк из li/Models
03:00:29
ссылка на импорт модели заказа из следующего SL
03:00:33
связать и импортировать изображение из следующего изображения SL
03:00:38
вот тело таблицы, сохраните код и
03:00:43
прокрутить вверх
03:00:45
найдите третий цветовой диапазон и закройте его
03:00:51
прежде чем закрыть контейнер, я
03:00:54
собираюсь создать еще одного такого разработчика в
03:00:57
этот Dev создает имя класса Dev, установленное на
03:01:02
корзина внутри, создающая еще один набор разработчиков
03:01:06
имя класса для тела корзины и в этом St
03:01:11
добавьте второй заголовок в сводку заказа, сделайте это
03:01:14
Бол, установив имя класса в заголовок карты
03:01:18
здесь мы собираемся показать налог на товары
03:01:20
форма доставки и общей цены не упорядочена
03:01:24
list для отображения первого элемента списка
03:01:28
цена товара цена налога цена доставки и
03:01:33
общая цена все отлично вот это
03:01:37
разница в сводке заказа, с которой мы закончили
03:01:41
показаны данные, которые нам не нужны
03:01:44
занятие в этом уроке в следующем
03:01:46
сеанс, нам нужно оплатить заказ, установите его
03:01:51
чтобы доставить, поэтому мы используем их в следующем
03:01:55
уроки, следующий шаг — создание страницы
03:01:58
компонент внутри папки ID в приложении
03:02:04
карта в идентификаторе заказа приложения, щелкните правой кнопкой мыши новый
03:02:09
страница файла. TSX импортирует детали заказа из
03:02:14
та же функция экспорта папки генерирует
03:02:18
метаданные получают параметр и из
03:02:21
параметр получить идентификатор и установить страницу
03:02:24
название заказа ID
03:02:27
закажите, затем экспортируйте порядок функций theault
03:02:32
историю, затем экспортируйте функцию theault
03:02:36
Страница сведений о заказе, входные данные для этого
03:02:41
компонент - это параметры и и в
03:02:44
params у нас есть идентификатор типа A String, что
03:02:47
мы собираемся сделать это просто вернуться
03:02:51
компонент деталей заказа мы уже
03:02:55
определено здесь и передает порядок двух значений
03:02:59
Идентификатор получается из URL-адреса и PayPal
03:03:03
идентификатор клиента, он исходит из среды
03:03:07
переменные, если они не существуют, используйте
03:03:10
песочница по умолчанию, мы будем использовать ее
03:03:15
оцените этот идентификатор клиента на следующем уроке
03:03:19
реализовать оплату заказа через PayPal
03:03:22
сохраните код, проверим результат
03:03:25
что мы собираемся сделать, это выбрать
03:03:29
товар добавить в корзину перейти к деталям корзины
03:03:33
перейдите на страницу корзины, чтобы оформить заказ
03:03:37
введите адрес доставки способ оплаты
03:03:41
и, наконец, нажмите на место или
03:03:44
заказ потрясающий вот подробности заказа
03:03:48
страница в первом заголовке у нас есть порядок IDE
03:03:52
заказать карту для адреса доставки
03:03:55
статус не доставлен следующая карта
03:03:58
способ оплаты типа стремиться нет
03:04:01
оплачено, а следующим является список
03:04:05
товары в конце у нас есть сводка заказа
03:04:09
отлично, мы реализовали страницу с подробностями заказа
03:04:13
на этом уроке и на следующем уроке мы
03:04:15
Осуществить оплату через
03:04:21
PayPal в этом уроке мы собираемся
03:04:24
сначала внедрить платежное поручение через PayPal
03:04:28
все, что нам нужно, чтобы получить учетные данные от
03:04:32
PayPal обратиться к разработчику.
03:04:35
PayPal.com и
03:04:37
войдите в систему и нажмите «Получить учетные данные API».
03:04:41
войдите в свою учетную запись
03:04:43
если у вас нет учетной записи PayPal, нажмите
03:04:46
при регистрации и создании своего PayPal
03:04:48
аккаунт, на который вы будете перенаправлены
03:04:51
разработчик.
03:04:53
PayPal.com
03:04:55
панель управления, нажмите на приложения и
03:05:00
учетные данные, мы в песочнице
03:05:03
режим, если вы хотите создать живую
03:05:05
сменить учетные данные, чтобы пережить это
03:05:10
кнопка, давайте начнем с создания приложения
03:05:13
приложение введите здесь название приложения, которое я устанавливаю
03:05:18
следующий амазон
03:05:21
Выбор V2
03:05:24
Продавец выбирает песочницу по умолчанию
03:05:27
учетную запись и создайте
03:05:29
приложение, здесь у нас есть идентификатор клиента и
03:05:33
Секретный ключ
03:05:35
скопировать, перейти к коду vs, открыть файл EnV
03:05:44
и добавьте три переменные, первая из которых
03:05:49
URL-адрес API Paypal это
03:05:53
Песочница API-MS. paypal.com, если вы
03:05:57
используя живой удалить
03:06:01
Идентификатор клиента PayPal в песочнице, вставьте
03:06:05
идентификатор клиента здесь вставьте идентификатор клиента
03:06:09
здесь и для приложения Secret
03:06:14
скопировать приложение
03:06:17
секрет и вставьте сюда, не используйте эти
03:06:20
значения, потому что я собираюсь удалить это
03:06:22
приложение после этого
03:06:25
видео, сохрани его и пойдем дальше
03:06:30
шаги Следующий шаг — создание PayPal.
03:06:34
TS в живой папке, которую мы собираемся определить
03:06:38
некоторые служебные функции для доступа к PayPal
03:06:41
открыть папку Live, новый файл
03:06:45
PayPal.
03:06:46
ТС первым делом установил
03:06:50
base это базовый URL, с которого он прочитан
03:06:54
URL-адрес API PayPal для этой переменной среды
03:07:00
если оно равно нулю, далее используйте значение по умолчанию
03:07:04
шаг — экспортировать константу PayPal в виде
03:07:09
объект, и здесь мы собираемся определить
03:07:11
некоторые служебные функции
03:07:14
первая функция находится за пределами PayPal
03:07:18
это создание доступа
03:07:21
токен в этой асинхронной функции, которую мы читаем
03:07:25
Идентификатор клиента и секрет приложения от
03:07:29
среда
03:07:30
переменные, затем вызовите
03:07:33
Буфер из node.js
03:07:36
и преобразовать столбец идентификатора клиента PayPal
03:07:41
Секрет PayPal для хеширования строки на основе
03:07:46
база
03:07:48
64 вот у нас есть
03:07:50
выключаем как хеш-значение и передаем его
03:07:56
к этому API это API в PayPal для
03:08:02
сгенерировать токен доступа, варианты для
03:08:06
этот API
03:08:07
вызов метода здесь
03:08:11
опубликовать как payLo
03:08:13
установите тип Grand для учетных данных клиента и
03:08:17
в
03:08:18
базовая авторизация прохода заголовка
03:08:23
хеш-значение, которое мы сгенерировали в предыдущем
03:08:26
шаг в ответе, который я вызываю handle
03:08:31
ответ, чтобы преобразовать ответ из
03:08:34
PayPal в Json
03:08:37
данные, давайте определим ответ на дескриптор
03:08:40
функция, это асинхронная функция, получите
03:08:43
ответ в качестве входного параметра, если
03:08:47
статус
03:08:49
ответ нормальный, я имею в виду, если это 200 или
03:08:57
2011 вернуть ответ. Json иначе
03:09:02
сгенерировать сообщение об ошибке и через
03:09:06
ошибка. Я вызываю эту функцию здесь, получаю
03:09:09
ответ и возврат токена доступа из
03:09:12
данные Json
03:09:14
объект Сохранить код, сгенерировав
03:09:18
токен доступа, который мы готовы создать
03:09:20
служебные функции в PayPal
03:09:24
объект, первая функция — create
03:09:27
порядок, в котором мы вызываем эту функцию, когда хотим
03:09:30
перенаправить пользователя на сайт PayPal
03:09:33
сделать
03:09:35
оплата, это асинхронно, это асинхронно
03:09:38
функция, которая принимает общую цену как
03:09:41
номер, затем мы вызываем создание токена из
03:09:46
эту функцию и получить токен доступа
03:09:50
от
03:09:51
затем он формирует URL-адрес для создания заказа
03:09:57
по этому адресу базовый URL я имею в виду вот это
03:10:00
один SL slv2 для оформления заказа SL
03:10:04
заказы, получив этот URL и передав
03:10:08
этими опциями мы создаем заказ в
03:10:11
PayPal
03:10:14
и это делает возможным
03:10:19
оплатить заказ через PayPal в
03:10:24
варианты у нас есть метод, равный сообщению в
03:10:27
заголовок нам нужен для установки авторизации
03:10:30
to brr токен доступа и тип контента
03:10:33
типа Json в теле нам нужен EST
03:10:38
преобразовать этот объект в строку, намерение
03:10:41
захватывать
03:10:43
единица покупки — это массив, содержащий
03:10:47
а
03:10:48
объект в этом объекте у нас есть сумма в
03:10:51
сумма, которая нам нужна, чтобы определить
03:10:53
код валюты это доллар США и
03:10:56
ценность в том, что это
03:11:00
цена, а ценность - это цена
03:11:05
Следующая функция в объекте PayPal:
03:11:07
захватить платеж, мы называем эту функцию
03:11:10
когда мы собираемся завершить оплату
03:11:15
принять идентификатор заказа, это идентификатор заказа
03:11:17
от PayPal, а не от нашего
03:11:21
приложение, как и раньше, получить доступ к
03:11:25
токен доступа и новый URL-адрес для
03:11:29
получение платежа.
03:11:32
вроде slv2 SL checkout заказ SL заказ
03:11:38
id/ capture, затем позвоните в Fitch по этому URL-адресу.
03:11:44
и установите метод публикации и заголовка
03:11:48
токен авторизации V, чтобы мы авторизовались
03:11:51
этот запрос с использованием токена доступа из
03:11:54
сгенерировать токен доступа и вызвав
03:11:56
этот
03:11:58
API, оплата будет произведена в
03:12:04
Хороший следующий шаг PayPal — создание
03:12:11
API заказа PayPal с использованием App Router в
03:12:16
nextjs перейти к заказам API приложения
03:12:21
ID и создайте новую папку с именем create
03:12:26
PayPal
03:12:27
порядок внутри этого нового маршрута файла. ТС для
03:12:32
сгенерировать API для ответа на создание
03:12:36
заказ
03:12:38
API вот это
03:12:40
код при создании PayPal или заказе
03:12:44
Минусы экспорта API, опубликуйте это сообщение
03:12:48
Функция отключения API из активной папки
03:12:53
и оберните асинхронную функцию, которая принимает
03:12:57
все
03:13:00
параметры как
03:13:02
запросы и в этой функции
03:13:06
извлеките первый параметр, это
03:13:10
запрос, а второй параметр — это
03:13:12
объект, содержащий параметры в
03:13:16
URL, если есть
03:13:19
нет
03:13:21
аутентификация, если пользователь не авторизован
03:13:25
отправить ошибку
03:13:26
сообщение, затем подключитесь к базе данных
03:13:30
использование подключения к БД из живого
03:13:33
папка и после этого модель заказа вызова
03:13:39
импортировано из моделей
03:13:41
папку, затем вызовите поиск по
03:13:45
ID на ID в
03:13:50
URL из папки «Модели», импортируйте его
03:13:56
от моделей
03:13:58
папка проверьте порядок, если она у нас есть
03:14:01
заказать в
03:14:03
база данных создает внутри блок catch TR
03:14:07
которые импортируют PayPal из активной папки, которую мы
03:14:11
уже создан здесь
03:14:13
здесь и позвоните, создайте заказ из этого
03:14:16
объект в качестве параметра передает общую цену
03:14:20
мы собираемся получить это значение от пользователя
03:14:24
через
03:14:25
PayPal получает заказ PayPal и возвращает его
03:14:30
это как Json вперед, если есть
03:14:34
ошибка вернуть ошибку
03:14:36
сообщение, если заказ не существует
03:14:39
заказ на возврат не найден и установите статус
03:14:41
до 4
03:14:43
четвертый следующий шаг — создание еще одного API
03:14:47
чтобы захватить заказ PayPal и завершить
03:14:51
платеж в идентификаторе щелкните правой кнопкой мыши новый
03:14:54
папка для захвата заказа PayPal внутри нее
03:14:58
щелкните правой кнопкой мыши маршрут.
03:15:02
TS нравится то, что мы сделали при создании PayPal
03:15:05
для того, чтобы нам нужно определить пост
03:15:10
функция обернуть функцию в off
03:15:13
импортирован из оф. ТС получить параметры
03:15:19
извлеките первый параметр и переименуйте
03:15:22
это
03:15:23
для запроса, а второй параметр содержит
03:15:27
значения в URL-адресе, идентификатор в URL-адресе
03:15:32
если есть ошибка, покажи ошибку
03:15:33
сообщение закройте открывающиеся скобки
03:15:38
и приступим к подключению к
03:15:41
БД подключиться к
03:15:44
база данных импортирует ее из БД, затем подключаемся
03:15:48
шаг - получение заказа из заказа
03:15:51
модель импортирована из модели заказа. ТС, если
03:15:56
заказ
03:15:57
существует вызов re.
03:16:00
Json, чтобы получить полезную нагрузку от этого API.
03:16:05
и из полезной нагрузки доступ к заказу
03:16:09
идентификатор, затем импортируйте
03:16:12
PayPal. ТС из папки live и звонок
03:16:17
зафиксировать оплату по идентификатору заказа, это
03:16:20
идентификатор заказа
03:16:23
PayPal поместил результат в данные захвата
03:16:27
и обновляет
03:16:29
заказ, подобный этому, оплачивается через
03:16:33
платный добавить к текущему
03:16:35
время и результат платежа содержат идентификатор
03:16:39
платежа во время обновления PayPal в
03:16:43
PayPal и адрес электронной почты содержат
03:16:46
адрес электронной почты пользователя
03:16:49
адрес перейти к заказу
03:16:51
модель добавить обновление
03:16:54
время и результат платежа проходят
03:16:58
захват данных из PayPal в платеж
03:17:02
результат в нашей базе данных, например
03:17:06
это в конце нам нужно вызвать Save on
03:17:09
порядок сохранения этой информации в
03:17:12
базу данных и вернуть обновленную
03:17:15
заказ вперед, если есть ошибка
03:17:19
вернуть сообщение об ошибке, если заказ
03:17:21
не существует возврат
03:17:24
Сообщение об ошибке 404, сохраните
03:17:29
код, следующий шаг в деталях заказа
03:17:33
Детали открытого заказа на компонент.
03:17:37
TSX и сразу после использования сеанса Define
03:17:41
создать заказ PayPal
03:17:45
функция здесь мы называем это
03:17:49
Метод установки API для публикации заголовка
03:17:53
приложение SL
03:17:56
Json, и то, что мы здесь сделали, это получить
03:18:00
ответ и вернуть идентификатор заказа для
03:18:05
PayPal
03:18:08
компонент после этой функции определяет
03:18:11
несанкционированный
03:18:14
by Определить несанкционированный PayPal, заказать его
03:18:18
принимаем данные и здесь мы вызываем захват
03:18:23
Заказ PayPal, который мы создали ранее
03:18:28
шаги передают данные как
03:18:32
параметр в качестве полезной нагрузки для этого
03:18:36
AP и в тогдашней части возврата
03:18:43
тот
03:18:44
Json-данные ответа и в
03:18:48
в последний раз поднимите тост за это прекрасное послание
03:18:52
импортировано из реакции горячего тоста
03:18:54
сообщение заказ оплачен
03:18:56
успешно мы используем создание заказа PayPal
03:18:59
и
03:19:00
отменить одобрение в PayPal
03:19:04
компонент открыт
03:19:06
Терминал
03:19:08
установка pnpm при знаке реакции PayPal SL
03:19:13
PayPal JS — это официальный пакет от
03:19:16
PayPal для доступа к PayPal API в
03:19:22
реакция после установки прокрутки
03:19:26
вниз и сразу за Ли
03:19:30
Total Render это условный рендеринг
03:19:34
если заказ не оплачен и оплата
03:19:37
метод — Paypal, затем визуализируйте lii.
03:19:40
внутри этого звонка
03:19:43
Скрипт PayPal
03:19:45
провайдер внутри этого рендеринга PayPal
03:19:48
поставщик скриптов
03:19:50
из PayPal
03:19:52
пакет в самом начале этого
03:19:55
файл
03:19:56
импортировать кнопку PayPal и скрипт PayPal
03:19:59
Провайдер из at подписывает реакцию PayPal
03:20:02
Прокрутка PayPal JS
03:20:05
вниз установить параметры в параметрах получить
03:20:09
Идентификатор клиента PayPal из реквизитов этого
03:20:14
компонент и
03:20:16
внутри провайдера отображается кнопка PayPal
03:20:21
мы передаем два свойства, первое из которых
03:20:25
создать функцию заказа и отменить одобрение
03:20:29
уже создал эти функции на
03:20:32
начало этого
03:20:34
компонент Давайте проверим результат, выберите
03:20:38
товар добавить в корзину перейти в корзину
03:20:42
хотел проверить
03:20:44
вне
03:20:45
входить
03:20:47
доставка выберите PayPal в PayPal
03:20:50
следующий метод и поместите
03:20:54
закажи тогда ага, у нас есть PayPal
03:20:58
кнопка, давайте откроем и увеличим
03:21:03
нравится это и нажмите PayPal
03:21:08
кнопку, вы будете перенаправлены на
03:21:10
PayPal для завершения платежа введите свой
03:21:15
тест
03:21:16
Укажите свой тестовый адрес электронной почты, который у вас уже есть.
03:21:20
в вашей учетной записи песочницы при создании
03:21:24
ваши учетные данные для учетной записи песочницы и
03:21:28
затем завершите
03:21:31
купи через некоторое время, ага, ты будешь
03:21:35
перенаправлен на страницу заказа, но это
03:21:37
время оплаты
03:21:40
информация
03:21:42
статус платежа оплачен при этом
03:21:46
штат и нет кнопки PayPal
03:21:49
вот хорошо, мы успешно
03:21:52
реализована оплата заказа через PayPal в
03:21:56
этот урок до следующего урока
03:22:02
пока-пока на этом уроке мы будем
03:22:05
создание страницы истории заказов, давайте начнем
03:22:09
создав API для
03:22:12
возврат заказов клиентов из серверной части go
03:22:16
для приложения заказов API и создания нового
03:22:20
папка задайте имя для меня, она собирается
03:22:22
к
03:22:23
вернуть текущего пользователя
03:22:27
заказы внутри этого маршрута Define. ТС здесь
03:22:31
это код этого маршрута. Export Conss
03:22:36
получите это, когда пользователь перейдет по этому адресу /
03:22:39
API SL заказы slm
03:22:42
этот
03:22:45
возврат функции
03:22:48
заказы в условии if мы проверяем
03:22:51
пользователь
03:22:52
аутентификация, если это нулевой возврат
03:22:56
несанкционированный ответ, в противном случае получите
03:22:59
пользователь из записи. выкл. Подключитесь к
03:23:02
база данных и
03:23:05
найти в модели заказа все заказы, которые
03:23:10
пользователь, равный текущему пользователю
03:23:14
ID, затем позвоните в ответ. Json для возврата
03:23:18
приказы на защиту
03:23:19
FR мы будем использовать его позже в этом уроке.
03:23:23
мы будем использовать этот API позже в этом
03:23:26
урок, следующий шаг - в карточке использования
03:23:30
магазин
03:23:31
зацепить в самом конце после очистки Define
03:23:36
новый
03:23:37
функция, в которой он находится
03:23:39
здесь мы сделали сброс
03:23:44
корзину магазина в исходное состояние
03:23:48
исходное состояние берется отсюда, и это
03:23:53
значение по умолчанию для всех карт
03:23:58
статус следующий шаг в меню
03:24:02
Компонент внутри компонентов заголовков
03:24:06
меню заголовков.
03:24:08
TSX в самом
03:24:10
начало
03:24:12
извлечь его из карты использования
03:24:15
службе и в
03:24:18
подпишите и при выходе вызов обработчика
03:24:22
эту функцию, вызвав ее, когда мы
03:24:24
перенаправить пользователя на экран входа, который мы
03:24:27
удалить всех пользователей
03:24:30
информация
03:24:32
включая способ оплаты в корзине
03:24:35
и адрес доставки из
03:24:37
карта
03:24:40
магазин, следующий шаг — добавление меню
03:24:44
внутреннее раскрывающееся меню здесь перед знаком
03:24:50
создайте Li и внутри этого определите
03:24:54
ссылка на страницу истории заказов, если я нажму
03:24:59
на свое имя я могу получить страницу истории заказов
03:25:04
если я нажму на него, я буду перенаправлен на
03:25:06
404, давайте создадим эту страницу на лицевой стороне приложения
03:25:12
щелкните правой кнопкой мыши в новой папке, упорядочите тире
03:25:19
история внутри этого права
03:25:22
нажмите новый файл мои заказы. ТСХ это
03:25:28
компонент, который я собираюсь использовать для
03:25:31
визуализировать заказы пользователей, сделать его клиентом
03:25:36
компонент, установив использование экспорта клиента
03:25:40
мои заказы по умолчанию
03:25:43
функция, на которую это реагирующий компонент
03:25:46
визуализировать пользователя
03:25:47
заказывает доступ к маршрутизатору с помощью use
03:25:51
Роутер Крюк от Nex SL
03:25:55
навигация и вот пришло время звонить
03:25:59
API, который у нас есть в начале
03:26:02
этот урок с использованием импортированного S SWR
03:26:07
от s SWR и установите UR L на/API SL
03:26:13
заказы SL
03:26:15
помоему из этого крючка мы получаем данные
03:26:19
переименуйте его вorders и получите
03:26:21
ошибки, чтобы показать ошибку, если есть
03:26:24
ошибка при получении этих данных, потому что я
03:26:28
собираюсь визуализировать этот компонент только на
03:26:30
клиентская сторона, я использую это
03:26:33
код Определить пользователя
03:26:38
Состояние Определить подключенное состояние
03:26:42
в эффекте использования, импортированном из preact
03:26:46
установите значение true, если компонент
03:26:50
не смонтировано, возвращает пустую строку с помощью
03:26:53
имея этот код, мы не получим ничего
03:26:56
ошибка в несовпадении клиента и сервера
03:27:01
рендеринг
03:27:02
результат следующего F
03:27:06
условия касаются отображения ошибки
03:27:10
сообщение и если заказа нет, покажите
03:27:14
загружаю сообщение здесь, мы готовы
03:27:17
форма
03:27:18
интерфейс моих заказов
03:27:22
компонент
03:27:25
вернуться, вернуть
03:27:28
стол в столе
03:27:31
столбцы отображения заголовков для
03:27:35
ID дата заказа общая стоимость оплатить
03:27:39
статус доставить статус и действие действия
03:27:42
к
03:27:43
удалить, чтобы получить подробную информацию
03:27:47
порядок в теле таблицы, называемой картой
03:27:51
функция по заказам из бэкэнда и для
03:27:55
каждый заказ
03:27:57
введите заказ, импортированный из
03:28:00
//m Модели SL-ордера
03:28:03
модель отображает строку таблицы, подобную этому набору
03:28:08
ключ к идентификатору заказа первая строка
03:28:12
отображает идентификатор только последних четырех
03:28:16
персонажи
03:28:18
Идентификатор для создания столбца
03:28:21
маленькая дата создания, только часть даты, а не
03:28:26
часть времени, ты можешь избавиться от этого, если ты
03:28:30
хочу показать всю часть общей даты
03:28:35
цена, укажите доллар или вашу валюту раньше
03:28:39
это если заказ
03:28:42
оплачено и оплачено в имеет ценность в оплаченном
03:28:50
отображение столбца оплачено, если оно не оплачено
03:28:55
отображать нет
03:28:56
оплачено, сделай то же самое для доставки
03:29:00
статус, последний столбец предназначен для отображения
03:29:04
ссылка подробнее импортировать ссылку из Nex SL
03:29:08
ссылка для установки слайда заказа hft SL
03:29:13
и пройти
03:29:14
H, правда, подпись такая
03:29:19
подробности здесь
03:29:22
код для части «Возвращение», и мы
03:29:25
готов использовать его на странице. ТСХ внутри
03:29:30
история заказов, щелкните правой кнопкой мыши страницу нового файла
03:29:34
делать
03:29:36
ТСХ в этом
03:29:38
Метаданные минусов экспорта компонента
03:29:42
и установите заголовок для заказа
03:29:45
Порядок функций экспорта истории по умолчанию
03:29:47
история, это компонент реагирования на
03:29:52
отображать историю заказов
03:29:54
страница внутри, которая создает пустую
03:29:59
набор контейнеров H1 для истории заказов и
03:30:04
затем визуализируйте компонент моих заказов, сохраните
03:30:08
код и вот результат создания
03:30:11
горизонтальная прокрутка для доступа ко всем
03:30:15
столбцы на меньшем экране в The
03:30:18
Вернуть часть компонента моих заказов
03:30:22
создать имя класса набора разработчиков для более гриппа
03:30:26
X Авто и вырежьте
03:30:29
table полностью поместила ее внутри div и
03:30:34
Сохраните код, имея его, вы можете
03:30:36
иметь
03:30:38
красивый
03:30:40
горизонтальная скрутка для доступа ко всем столбцам
03:30:44
для доступа ко всем столбцам
03:30:47
заказ
03:30:50
история, давай попробуем
03:30:52
Подробности истории повторного заказа здесь
03:30:57
у вас есть
03:30:58
доступ к
03:31:00
заказать как
03:31:02
этот
03:31:04
отлично, мы успешно выполнили заказ
03:31:07
история в этом уроке до следующего урока
03:31:15
пока, на этом уроке мы собираемся
03:31:17
создайте страницу профиля пользователя, давайте начнем с
03:31:22
создание обработчика API для обновления пользовательского интерфейса для
03:31:28
обновление пользователя
03:31:31
профиль, в который нам нужно зайти/
03:31:35
API SL
03:31:37
выключите и создайте папку для
03:31:42
профиль внутри этого создания
03:31:46
маршрут.
03:31:48
TS и импортировать o из o.
03:31:52
Форма TS поместила обработчик API с помощью экспорта
03:31:58
consp поставить и
03:32:00
оберните свою функцию
03:32:03
выключите, а затем проверьте
03:32:06
выключено, если значение равно нулю, возврат не разрешен
03:32:11
Следующий шаг — импорт пользователя подключения к БД
03:32:15
модель и bcrypt как
03:32:19
тогда это в дело
03:32:22
функция получения пользователя из записи. получить имя
03:32:28
электронная почта и
03:32:29
пароль из полезных данных API, которые вы вводите
03:32:34
эта информация в профиле обновления
03:32:39
сформировать и подключиться к
03:32:42
после этого создайте базу данных TR catch
03:32:46
заблокировать лайк
03:32:48
это и в тройке
03:32:52
поиск части вызова по идентификатору модели пользователя
03:32:57
идентификатор пользователя находится в объекте пользователя в
03:33:02
запись. офф мы уже заливаем офф.
03:33:09
ТС в этот момент
03:33:12
мы исправим ошибку типа здесь.
03:33:15
вопросительный знак перейти к корню
03:33:19
проект в пустом пространстве справа
03:33:22
щелкните новые типы папок внутри типов
03:33:27
создать новый файл, установить имя файла следующим образом:
03:33:31
выключенный.
03:33:33
DTS здесь импортирует следующий сеанс по умолчанию
03:33:38
и пользователь по умолчанию из следующего пакета
03:33:41
затем объявите модуль следующим и внутри
03:33:45
что я собираюсь обновить
03:33:48
такой сеанс в объекте пользователя добавить
03:33:52
ID не является обязательным и может быть строкой
03:33:56
или ноль
03:33:59
Админ, это необязательно и может
03:34:03
быть
03:34:04
Boolean и объединить его со значением по умолчанию.
03:34:08
пользовательский объект сеанса
03:34:11
также для
03:34:15
интерфейс расширить пользователя по умолчанию и добавить
03:34:19
admin и есть и ID и является администратором вроде
03:34:23
это, имея это в коде, который мы делаем
03:34:26
не получу никаких ошибок, и если я избавлюсь от
03:34:28
вопросительный знак нет ошибки
03:34:31
тоже сохраните код, проверьте пользователя в
03:34:36
база данных, если пользователь не существует, мы
03:34:38
не могу обновить этого пользователя, поэтому мне нужно
03:34:41
вернуть пользователя нет
03:34:43
найден, затем обновите пользователя на основе имени
03:34:47
адрес электронной почты и пароль от
03:34:51
фрин не забудь хешировать пароль
03:34:55
перед сохранением в
03:34:57
база данных, если пароль от
03:35:01
frend имеет значение null, тогда используйте предыдущий
03:35:06
пароля в базе у нас нет
03:35:08
обновите его, затем вызовите метод сохранения в БД
03:35:12
пользовательский объект и вернуть это сообщение
03:35:18
интерфейс, если есть ошибка a
03:35:20
ошибка возврата
03:35:23
сообщение, давайте перейдем к следующему шагу, оно уже в
03:35:26
меню.
03:35:30
TSX заходим в меню.
03:35:34
ТСХ
03:35:36
напишите после истории заказов добавьте новую
03:35:41
Ли разместила ссылку на страницу профиля, так что если я
03:35:45
нажмите здесь, у меня есть профиль в раскрывающемся списке-
03:35:48
меню вниз, когда я нажимаю на профиль I
03:35:52
должно получиться 404, пойдем и построим
03:35:54
Страница профиля в приложении, щелкните правой кнопкой мыши спереди, создайте
03:36:01
папка
03:36:03
профиль внутри этого нового
03:36:06
страница файла выполняет TSX в этом импорте файла
03:36:12
метаданные из следующих и минусов экспорта
03:36:15
метаданные устанавливают заголовок на
03:36:20
профиль, затем визуализируйте компонент реагирования
03:36:24
это серверный компонент, я использую синхронизацию
03:36:27
функция устанавливает имя компонента в
03:36:30
профиль и то, что я собираюсь вернуть, это
03:36:33
а
03:36:34
сформируйте вот такую ​​форму и давайте создадим вот эту
03:36:38
форма в профиле новый файл
03:36:42
форма.
03:36:46
ТСХ
03:36:49
rafc для создания компонента реагирования и
03:36:54
Экспорт
03:36:56
код сохранения по умолчанию вернуться назад импорт
03:37:01
формируем из Dot sl4 и сохраняем код сюда
03:37:06
у нас есть
03:37:08
форма вернуться в форму. ТСА вот и мы
03:37:11
сначала собираюсь обновить форму профиля
03:37:16
шаг — определение входных данных
03:37:18
введите в эту форму, мы получим
03:37:21
назовите пароль электронной почты и подтвердите
03:37:24
пароль, затем в компоненте формы получите
03:37:28
доступ к пользовательскому сеансу с помощью use
03:37:32
сессия, импортированная из следующего SL, реагирует
03:37:36
получить доступ к маршрутизатору с помощью маршрутизатора
03:37:39
крючок х/
03:37:42
Форма использования навигационного вызова из хука реакции
03:37:46
form установите тип ввода на входы и
03:37:51
для имени набора значений по умолчанию адрес электронной почты и
03:37:54
пароль для пустой строки, следующий шаг:
03:37:58
определение эффекта использования, импортируйте его из реакции
03:38:02
в самом
03:38:03
начало избавляться от реакции и заменять
03:38:06
это с эффектом использования в Quy
03:38:08
Скобки Определите использование клиента в самом
03:38:13
начинаю прокручивать вниз в использовании
03:38:16
эффект я проверяю сессию и сессию.
03:38:20
пользователь, если у нас есть
03:38:22
значение устанавливает поле ввода имени и адреса электронной почты
03:38:28
со значениями в сеансе
03:38:32
объект, который я использую заданное значение из хука реакции
03:38:36
форма для заполнения полей ввода, следующий шаг
03:38:41
формирование формы Обработчик формы, когда пользователь
03:38:45
нажмите кнопку «Отправить», мне нужно определить
03:38:49
отправить форму
03:38:50
функция типа submit Handler в
03:38:53
реагируйте на форму перехвата и принимайте ввод как
03:38:57
общий тип этого
03:39:00
функция, это асинхронная функция, которая
03:39:02
принять форму
03:39:04
в качестве параметра и внутри него я извлекаю
03:39:08
имя электронной почты и пароль из формы
03:39:11
объект, это значения, которые пользователь
03:39:15
введенные в поля ввода, затем создайте
03:39:18
ТР улов
03:39:20
заблокировать такой вызов /API SL выключен/
03:39:25
профиль мы уже
03:39:27
создал этот API
03:39:31
Обработчик установил метод публикации заголовка
03:39:35
приложение типа контента Json и в
03:39:39
тело вернуть имя адрес электронной почты и пароль от
03:39:43
вход
03:39:45
коробки, если результат нормальный, тост
03:39:49
красивый профиль успешно обновлен
03:39:54
сообщение, импортированное из реакции, горячее
03:39:57
тост, затем создайте новый сеанс из
03:40:01
предыдущий сеанс, но в пользовательском хранилище
03:40:05
всю предыдущую информацию пользователя, кроме
03:40:08
обновить только имя и адрес электронной почты
03:40:12
затем позвони в обновление
03:40:15
метод и передать новый сеанс в качестве параметра
03:40:18
к обновлению, откуда оно берется
03:40:21
обновление
03:40:23
метод, который возникает в результате использования
03:40:26
сеанс со следующего выезда/
03:40:30
реагировать, если результат неудовлетворительный, получить
03:40:35
ответ и показать сообщение в
03:40:39
результат в данные, если нет сообщения
03:40:43
показать всплывающее сообщение об ошибке в
03:40:47
блок catch получить улов, используя это
03:40:51
код
03:40:53
и покажи ошибку
03:40:56
сообщение, давайте перейдем к последней части
03:41:00
этот компонент находится в возврате
03:41:02
раздел избавиться от
03:41:04
это и заменить его
03:41:07
с помощью этого St установите максимальную ширину на наименьшую
03:41:11
карточка выравнивания экрана по центру для создания
03:41:15
такая граница внутри создаёт
03:41:18
другой разработчик установил имя класса на карту
03:41:21
body для создания отступов вокруг
03:41:25
карточка добавить заголовок в одно имя класса
03:41:29
название карты, чтобы сделать это
03:41:31
жирный шрифт создать форму для отмены отправки звонка
03:41:35
обработать отправку из формы реагирования и
03:41:38
передать функцию отправки формы, которую мы создаем
03:41:41
здесь следующий шаг создайте первый вход
03:41:46
коробка как
03:41:49
это добавит имя класса набора разработчиков в поле
03:41:53
вертикально
03:41:55
два создают метку и вводят
03:42:00
поле зарегистрировать ввод
03:42:04
окно с использованием регистра формы реагирования
03:42:08
функция, и этот V требуется, установите
03:42:12
имя класса для ввода границы ввода
03:42:14
создайте это красивое поле ввода, если оно есть
03:42:17
это ошибка, покажите сообщение об ошибке в
03:42:20
этот
03:42:21
поле, пойдем к следующему полю
03:42:25
такое поле ввода электронной почты, как это, я добавил
03:42:31
новый шаблон для проверки электронной почты
03:42:36
действителен следующий новый
03:42:41
пароль и последний фи подтверждают новый
03:42:45
пароль в поле ввода внутри
03:42:48
зарегистрировать функцию из формы реагирования I
03:42:51
добавил
03:42:52
проверить функцию и получить пароль
03:42:56
в этом вводе
03:42:58
коробке и в части «Возвращение» я сравниваю
03:43:02
пароль со значением в подтверждении
03:43:06
новый пароль, если они равны друг
03:43:09
иначе это окажется правдой, поэтому я вернусь
03:43:11
правда все в порядке
03:43:15
в противном случае, если это ложный пароль, следует
03:43:18
не совпадение будет
03:43:21
вернулись и им не требуется
03:43:24
поле в пароле и подтвердите
03:43:27
пароль, потому что смена пароля
03:43:31
не обязательно в форме обновления профиля
03:43:35
если есть ошибка, покажи ошибку
03:43:37
сообщение, последний шаг — отправить
03:43:41
кнопка создать подпись кнопки Dev
03:43:46
обновить, если отправляется, сделайте это
03:43:50
отключено и показать
03:43:53
спиннер все окей давай нажимай
03:43:56
при обновлении пароля, как вы видите пароль
03:43:59
должно совпадать, я не собираюсь обновлять
03:44:02
только пароль, я собираюсь изменить
03:44:05
имя пользователя и адрес электронной почты
03:44:08
пользователь нажимает на
03:44:11
обновить профиль успешно обновлен и
03:44:15
если вы проверите здесь имя пользователя
03:44:18
обновлено в шапке
03:44:22
меню перейти на другую страницу вернуться к
03:44:26
страница профиля на этот раз у меня есть Джон
03:44:29
и админ, давайте сделаем им лайк
03:44:32
раньше и нажмите «Обновить»
03:44:36
круто, работает идеально
03:44:40
и мы сделали этот урок
03:44:42
внедрение страницы обновления профиля до тех пор, пока
03:44:46
следующий урок
03:44:50
пока, на этом уроке мы собираемся
03:44:53
развернуть наше приложение на Versal, мы
03:44:57
уже опубликовал наш код на GitHub
03:45:01
следующий шаг — переход на вирусный.com и
03:45:05
создайте новую учетную запись, нажмите «Зарегистрироваться», если
03:45:08
у вас нет учетной записи, выберите
03:45:10
тип плана введите свое имя и нажмите
03:45:15
продолжить, затем продолжить с помощью keop и
03:45:18
подключите свою учетную запись GitHub к Versal
03:45:21
то вы будете перенаправлены на вирусный.com
03:45:24
панель управления на этой странице нажмите «Добавить новую»
03:45:28
проект импортирует git-репозиторий, если вы
03:45:31
не вижу здесь своей учетной записи GitHub
03:45:34
нужно подключить его снова, и если вам
03:45:36
не вижу здесь вашего проекта, вам нужно
03:45:39
зайти на github.com
03:45:41
настройка нажмите на значок настройки
03:45:45
интеграционные приложения находят универсальные
03:45:48
нажмите «Настроить» и убедитесь, что
03:45:51
доступ к репозиторию - ко всему репозиторию
03:45:55
затем выберите свой проект, мое название проекта
03:45:58
следующий Amazon V2, имя репозитория на
03:46:02
GitHub и нажмите «Импортировать» в следующем
03:46:05
экран нам нужно настроить проект
03:46:08
название проекта в следующем — amazon2 вы
03:46:11
можешь переименовать его как хочешь
03:46:13
все в порядке только в
03:46:16
переменные среды, нам нужно добавить
03:46:19
переменная в файле EnV в нашем проекте
03:46:23
давайте начнем с добавления URI mongodb
03:46:27
это здесь и вставьте свой mongodb из
03:46:30
Atlas mongodb не ваш местный, если вы
03:46:33
оно должно начинаться с mongodb plus
03:46:36
SRC сервер должен быть mongod DB в CL
03:46:40
вставьте сюда полный URL-адрес и нажмите «ДОБАВИТЬ».
03:46:43
следующий URL не по адресу, я собираюсь
03:46:47
введите этот адрес, название моего проекта, это
03:46:51
должно быть так
03:46:53
столбец https SL косая черта названия проекта do
03:46:58
Weel DoApp убедитесь, что этот URL-адрес
03:47:02
уникальный, иначе вы получите ошибку
03:47:04
добавь, угу, давай на следующий раз
03:47:08
секрет, это должно быть что-то
03:47:10
секрет, что хочешь, сделай это секретом
03:47:13
добавить следующее поле: вставить URL-адрес Paypal API
03:47:17
значение здесь, если вы хотите использовать
03:47:20
жить один заменить его избавиться от песочницы
03:47:23
и оживите его, нажмите «ДОБАВИТЬ идентификатор клиента»
03:47:27
вставьте свой идентификатор клиента PayPal и последний
03:47:30
одно из них — приложение PayPal. Секретное платежное приложение.
03:47:34
секрет и вставь секрет сюда так сюда
03:47:37
это мое окружение
03:47:40
переменные нажмите на развертывание, чтобы увидеть, что мы
03:47:45
начать, развертывание началось
03:47:48
первый шаг - создание проекта, затем
03:47:51
развертывание, выполнение проверок и назначение
03:47:55
пользовательские домены вот имя моего
03:47:58
последний комментарий на GitHub, если я открою
03:48:02
часть здания, я вижу, что это такое
03:48:06
здесь происходит, как вы видите, это говорит о провале
03:48:09
для компиляции и исправления этой ошибки нам нужно
03:48:13
иди в середину. ТС и
03:48:18
удалить импорт из живой папки
03:48:22
потому что внутри. ТС, мы импортируем монго
03:48:28
и причина ошибки исходит из
03:48:31
mongos, если мы запустим mpm, запустим buildt, мы получим
03:48:36
та же ошибка, что и в версале
03:48:39
л
03:48:40
Вот так, чтобы удалить зависимость середины. ТС
03:48:45
к
03:48:47
mongos, нам нужно удалить эту строку и
03:48:51
сначала замените его этим кодом
03:48:54
импортировать следующую и следующую конфигурацию из
03:48:58
следующий пакет, затем создайте следующий
03:49:03
объект конфигурации, который удовлетворяет следующему из
03:49:07
конфигурация внутри этого
03:49:10
Определите поставщиков как пустой массив и
03:49:13
перезвонить как пустой
03:49:15
возражать против того, что я собираюсь сделать в
03:49:18
Обратный вызов — для получения авторизованной функции
03:49:22
вырезать это из
03:49:23
здесь в auth TS и переместите его в
03:49:28
середина. ТС сохрани код сохрани код
03:49:32
поэтому мы проверили все URL-адреса
03:49:37
средняя версия с использованием авторизованной функции
03:49:41
если они равны оплате доставки
03:49:44
разместить заказ в профиле заказа и администрировать нас
03:49:47
проверьте аутентификацию пользователя, если она есть
03:49:50
null, мы возвращаем false, и пользователь получит
03:49:54
быть перенаправлен на вход
03:49:56
проверить причину этого
03:50:00
Обходной путь — избавиться от ошибки в
03:50:04
Подключение к базе данных и импорт модели пользователя, потому что
03:50:08
в этих функциях мы получаем доступ к
03:50:10
монго и монго нельзя использовать или
03:50:16
импортирован посередине в промежуточном программном обеспечении
03:50:19
точки, потому что функция промежуточного программного обеспечения работает
03:50:23
время работы по краю, и в краю мы
03:50:26
не могу получить доступ к
03:50:28
монго, давай побежим
03:50:31
npm run build, мы избавимся от
03:50:36
ошибка в средней версии, на этот раз мы
03:50:38
получаю еще одну ошибку, о которой говорится в
03:50:42
маршрут. TS внутри папки профиля у нас есть
03:50:46
неверный экспорт, давайте перейдем к этому файлу в
03:50:50
внешнюю оболочку, которую нам нужно экспортировать как
03:50:55
любой, чтобы избавиться от этого
03:50:58
ошибка: следующая ошибка не реализовала типы
03:51:01
для
03:51:02
возвращающее значение вне оболочки, так что до тех пор, пока
03:51:06
это обновление мы используем как любое
03:51:10
давайте сделаем то же самое для других мест, где
03:51:12
у нас есть обертка, просто найдите это
03:51:16
в поиске
03:51:19
коробка для первого, мы сделали это для следующего
03:51:22
is/ API SL заказывает в самый
03:51:26
закончиться как
03:51:29
любой следующий
03:51:31
один в удостоверении личности
03:51:34
папка следующая
03:51:36
это захват заказа через PayPal
03:51:42
как
03:51:44
любое создание PayPal
03:51:46
заказывайте в самом конце, как
03:51:50
любой и последний - закажите SL mine как
03:51:56
любой, сохранить все
03:51:59
файлы типа
03:52:01
это здесь и здесь и запустите npm run построенный
03:52:07
в
03:52:08
Терминал
03:52:10
снова все готово и сборка
03:52:14
команда успешно
03:52:17
выполнено великолепно, мы готовы к развертыванию
03:52:21
наш проект, поэтому нам нужно перейти к
03:52:24
система контроля версий введите
03:52:27
веб-сайт публикации сообщений на Versal и
03:52:30
вот все изменения
03:52:34
файлы хорошие, просто зафиксируйте и синхронизируйте изменения
03:52:40
зайти на vero.com
03:52:42
найти проект
03:52:46
развертывание и вот мы строим
03:52:49
начал нажимать на него и вот мы можем
03:52:57
проверьте детали развертывания, откройте
03:53:00
строим и вот мы отличный проект
03:53:04
успешно построена средняя версия здесь
03:53:08
тот
03:53:10
развертывание
03:53:12
завершено вот это
03:53:14
подробности и в самом конце у нас NEX
03:53:18
Амон v2. Веральное приложение, давай откроем его
03:53:23
круто, вот и у нас работает наш сайт
03:53:27
здесь у нас есть список продуктов, давайте попробуем
03:53:30
войдите в систему нажмите «войти» войдите в админку
03:53:34
адрес электронной почты и пароль, нажмите и войдите в систему
03:53:37
хорошо, мы успешно вошли в систему и давайте
03:53:41
добавить товар в корзину выбрать
03:53:45
товар добавить в корзину перейти на главную страницу
03:53:48
выбрать еще один добавить к увеличению карты
03:53:51
перейти в корзину Про это, чтобы проверить
03:53:54
out введите адрес доставки Следующий шаг
03:53:58
выберите PayPal Следующий шаг, разместите заказ
03:54:03
а потом, ага, у нас есть PayPal и
03:54:07
следуя за PayPal
03:54:09
оплата мы можем осуществить оплату и
03:54:14
сайт работает идеально, на следующем уроке мы
03:54:17
собираемся добавить темную и светлую боковую панель

Описание:

👉 Code : https://github.com/basir/next-amazona-v2 👉 Demo : https://next-amazona-v2-final.vercel.app/ 👉 Q/A : https://github.com/basir/next-amazona-v2/issues TABLE OF CONTENT 00:00 1 Introduction 00:07:08 2.1 Install Tools On Mac 00:10:36 2.2 Install Tools On Windows 00:15:54 2.3 VS Code Configuration and Extensions 00:19:36 3 Create Next App 00:28:26 4 Create Github Repo 00:30:13 5 Create List Products Page 00:39:56 6 Create Details Product Page 00:48:58 7 Add Items To Shopping Cart 01:03:55 8 Remove Items From Cart 01:06:24 9 Create Shopping Cart Page 01:18:52 10 Connect To DB and Seed Data 01:33:52 11 Load Products From DB 01:45:03 12 Authenticate Users 02:02:50 13 Register New Users 02:20:49 14 Create Checkout Wizard 02:36:54 15 Place Order 02:55:29 16 Create Order Details Page 03:04:22 17 Pay Order By PayPal 03:22:03 18 Create Order History Page 03:31:15 19 Create User Profile Page 03:44:51 20 Publish Website On Vercel 🔥 Get Complete Course for $9.99 By Joining Pro Membership Here: https://www.youtube.com/watch?v=vcoOt329K8g&list=PLeh2GWv22bmTz4krWd371xqg9cCupvGxI&index=23 👉 You'll get Admin Dashboard, Search Products, Product Carousel and much more features in Pro Membership. #Nextjs #ecommerce #mongodb --- Follow me on: 👉 Website: https://codingwithbasir.com 👉 Twitter: https://twitter.com/basrijd 👉 Linkedin: https://www.linkedin.com/in/basir-j 👉 Github: https://github.com/basir

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Build Next.js ECommerce Website Like Amazon [Nextjs, Mongodb, Tailwind]"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Build Next.js ECommerce Website Like Amazon [Nextjs, Mongodb, Tailwind]" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Build Next.js ECommerce Website Like Amazon [Nextjs, Mongodb, Tailwind]"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Build Next.js ECommerce Website Like Amazon [Nextjs, Mongodb, Tailwind]" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Build Next.js ECommerce Website Like Amazon [Nextjs, Mongodb, Tailwind]"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Build Next.js ECommerce Website Like Amazon [Nextjs, Mongodb, Tailwind]"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.