Skip to content

DimaLitvinenko/goit-Js-hw-12-countries

Repository files navigation

goit-Js-hw-12-countries

Parcel boilerplate

Поиск стран

НСбольшоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ поиска Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ странС ΠΏΠΎ Π΅Π΅ частичному ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Rest Countries API, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ (v2) ΠΈ Π΅Π½Π΄ΠΏΠΎΠΈΠ½Ρ‚ /name, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² стран ΠΏΠΎΠΏΠ°Π²ΡˆΠΈΡ… ΠΏΠΎΠ΄ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ поиска.

Достаточно Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° стран. НСкоторыС страны, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Sudan, ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ страны являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ названия Π΄Ρ€ΡƒΠ³ΠΎΠΉ страны, South Sudan. НС Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎΠ± этих ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ….

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΎΡ‡Π΅Π½ΡŒ простой. НазваниС страны для поиска ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π² тСкстовоС ΠΏΠΎΠ»Π΅.

⚠️ Π’ΠΠ˜ΠœΠΠΠ˜Π•! HTTP-запросы Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄ происходят Π½Π΅ ΠΏΠΎ сабмиту Ρ„ΠΎΡ€ΠΌΡ‹, Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π΅Ρ‚, Π° ΠΏΡ€ΠΈ Π½Π°Π±ΠΎΡ€Π΅ ΠΈΠΌΠ΅Π½ΠΈ страны Π² ΠΈΠ½ΠΏΡƒΡ‚Π΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ input. Но Π΄Π΅Π»Π°Ρ‚ΡŒ HTTP-запрос ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши нСльзя, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ получится ΠΌΠ½ΠΎΠ³ΠΎ HTTP-запросов ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² нСпрСдсказуСмом порядкС (race conditions). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ debounce ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ HTTP-запрос спустя 500мс послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ пСрСстал Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ тСкст. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ npm-ΠΏΠ°ΠΊΠ΅Ρ‚ lodash.debounce.

Если Π±Π΅ΠΊΠ΅Π½Π΄ Π²Π΅Ρ€Π½ΡƒΠ» большС Ρ‡Π΅ΠΌ 10 стран ΠΏΠΎΠ΄ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… ΠΏΠΎΠ΄ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π² интСрфСйсС отобраТаСтся нотификация ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ запрос Π±ΠΎΠ»Π΅Π΅ спСцифичным. Для ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ pnotify.

ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅

Если Π±Π΅ΠΊΠ΅Π½Π΄ Π²Π΅Ρ€Π½ΡƒΠ» ΠΎΡ‚ 2-Ρ… Π΄ΠΎ 10-Ρ… стран, ΠΏΠΎΠ΄ ΠΈΠ½ΠΏΡƒΡ‚ΠΎΠΌ отобраТаСтся список ΠΈΠΌΠ΅Π½ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… стран.

список стран

Если Π±Π΅ΠΊΠ΅Π½Π΄ Π²Π΅Ρ€Π½ΡƒΠ» массив с ΠΎΠ΄Π½ΠΎΠΉ страной, Π² интСрфСйсС рСндСрится Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ странС: Π½Π°Π·Π²Π°Π½ΠΈΠ΅, столица, насСлСниС, языки ΠΈ Ρ„Π»Π°Π³.

информация ΠΎ странС

====================================================================================

Π—Π°Π΄Π°Π½ΠΈΠ΅ - поиск стран

Π‘ΠΎΠ·Π΄Π°ΠΉ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ Ρ‡Π°ΡΡ‚ΡŒ прилоТСния поиска Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ странС ΠΏΠΎ Π΅Ρ‘ частичному ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ API Rest Countries, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ рСсурс name, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² стран ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΠ²ΡˆΠΈΡ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ поиска. Π”ΠΎΠ±Π°Π²ΡŒ минимальноС ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ элСмСнтов интСрфСйса.

Country search app preview

HTTP-запрос

Напиши Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ fetchCountries(name) которая Π΄Π΅Π»Π°Π΅Ρ‚ HTTP-запрос Π½Π° рСсурс name ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ промис с массивом стран - Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ запроса. ВынСси Π΅Ρ‘ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» fetchCountries.js ΠΈ сдСлай ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ экспорт.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ

Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΎΡ‚ бэкСнда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, большая Ρ‡Π°ΡΡ‚ΡŒ свойств ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Π΅Π±Π΅ Π½Π΅ пригодится. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ объСм ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… добавь строку ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса - Ρ‚Π°ΠΊ этот бэкСнд Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»Π΅ΠΉ. Ознакомься с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ синтаксиса Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ².

Π’Π΅Π±Π΅ Π½ΡƒΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства:

  • name - ΠΏΠΎΠ»Π½ΠΎΠ΅ имя страны
  • capital - столица
  • population - насСлСниС
  • flag - ссылка Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π°
  • languages - массив языков

ПолС поиска

НазваниС страны для поиска ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π² тСкстовоС ΠΏΠΎΠ»Π΅ input#search-box. HTTP-запросы Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π½Π°Π±ΠΎΡ€Π΅ ΠΈΠΌΠ΅Π½ΠΈ страны, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ input. Но, Π΄Π΅Π»Π°Ρ‚ΡŒ запрос ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши нСльзя, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ получится ΠΌΠ½ΠΎΠ³ΠΎ запросов ΠΈ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² нСпрСдсказуСмом порядкС.

НСобходимо ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΡ‘ΠΌ Debounce Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ события ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ HTTP-запрос спустя 300мс послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ пСрСстал Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ тСкст. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ lodash.debounce.

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅ поиска, Ρ‚ΠΎ HTTP-запрос Π½Π΅ выполняСтся, Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° списка стран ΠΈΠ»ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ странС ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈ ΡΠ°Π½ΠΈΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ строки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ trim(), это Ρ€Π΅ΡˆΠΈΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΊΠΎΠ³Π΄Π° Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ строки.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ

Если Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ бэкСнд Π²Π΅Ρ€Π½ΡƒΠ» большС Ρ‡Π΅ΠΌ 10 стран, Π² интСрфСйсС пояляСтся ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ имя Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ спСцифичным. Для ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ notiflix ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈ Ρ‚Π°ΠΊΡƒΡŽ строку "Too many matches found. Please enter a more specific name.".

Too many matches alert

Если бэкСнд Π²Π΅Ρ€Π½ΡƒΠ» ΠΎΡ‚ 2-Ρ… Π΄ΠΎ 10-Ρ… стран, ΠΏΠΎΠ΄ тСстовым ΠΏΠΎΠ»Π΅ΠΌ отобраТаСтся список Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… стран. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт списка состоит ΠΈΠ· Ρ„Π»Π°Π³Π° ΠΈ ΠΈΠΌΠ΅Π½ΠΈ страны.

Country list UI

Если Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ запроса это массив с ΠΎΠ΄Π½ΠΎΠΉ страной, Π² интСрфСйсС отобраТаСтся Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ странС: Ρ„Π»Π°Π³, Π½Π°Π·Π²Π°Π½ΠΈΠ΅, столица, насСлСниС ΠΈ языки.

Country info UI

⚠️ Достаточно Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° стран. НСкоторыС страны, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Sudan, ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ страны являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ названия Π΄Ρ€ΡƒΠ³ΠΎΠΉ страны, South Sudan. НС Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎΠ± этих ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ….

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибки

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Ρ‘Π» имя страны ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ сущСствуСт, бэкСнд Π²Π΅Ρ€Π½Ρ‘Ρ‚ Π½Π΅ пустой массив, Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ со статус ΠΊΠΎΠ΄ΠΎΠΌ 404 - Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ. Если это Π½Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°Π΅Ρ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ поиск Π½Π΅ Π΄Π°Π» Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². Π”ΠΎΠ±Π°Π²ΡŒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ "Oops, there is no country with that name" Π² случаС ошибки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ notiflix.

Error alert

⚠️ НС Π·Π°Π±Ρ‹Π²Π°ΠΉ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ fetch Π½Π΅ считаСт 404 ошибкой, поэтому Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΡ‚ΡŒ промис Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠ»ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

====================================================================================

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ собран с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ parcel-project-template.

  • Для HTTP запросов использована Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° axios.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ синтаксис async/await.
  • Для ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ использована Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° notiflix.
  • Код ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Prettier.

Π—Π°Π΄Π°Π½ΠΈΠ΅ - поиск ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Π‘ΠΎΠ·Π΄Π°ΠΉ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ Ρ‡Π°ΡΡ‚ΡŒ прилоТСния поиска ΠΈ просмотра ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ слову. Π”ΠΎΠ±Π°Π²ΡŒ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ элСмСнтов интСрфСйса. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈ Π΄Π΅ΠΌΠΎ Π²ΠΈΠ΄Π΅ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния.

image-search-app-demo.mp4

Π€ΠΎΡ€ΠΌΠ° поиска

Π€ΠΎΡ€ΠΌΠ° ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π΅ΡΡ‚ΡŒ Π² HTML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ строку для поиска Π² тСкстовоС ΠΏΠΎΠ»Π΅, Π° ΠΏΡ€ΠΈ сабмитС Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ HTTP-запрос.

<form class="search-form" id="search-form">
  <input
    type="text"
    name="searchQuery"
    autocomplete="off"
    placeholder="Search images..."
  />
  <button type="submit">Search</button>
</form>

HTTP-запросы

Π’ качСствС бэкСнда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ API сСрвиса Pixabay. ЗарСгистрируйся, ΠΏΠΎΠ»ΡƒΡ‡ΠΈ свой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ доступа ΠΈ ознакомься с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² строки запроса ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π΅Π±Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ:

  • key - Ρ‚Π²ΠΎΠΉ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ доступа ΠΊ API.
  • q - Ρ‚Π΅Ρ€ΠΌΠΈΠ½ для поиска. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.
  • image_type - Ρ‚ΠΈΠΏ изобраТСния. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, поэтому Π·Π°Π΄Π°ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ photo.
  • orientation - ориСнтация Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ. Π—Π°Π΄Π°ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ horizontal.
  • safesearch - Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠΎ возрасту. Π—Π°Π΄Π°ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true.

Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ массив ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΠ²ΡˆΠΈΡ… критСриям ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса. КаТдоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ описываСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚Π΅Π±Π΅ интСрСсны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства:

  • webformatURL - ссылка Π½Π° малСнькоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для списка ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ.
  • largeImageURL - ссылка Π½Π° большоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.
  • tags - строка с описаниСм изобраТСния. ΠŸΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° alt.
  • likes - количСство Π»Π°ΠΉΠΊΠΎΠ².
  • views - количСство просмотров.
  • comments - количСство ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².
  • downloads - количСство Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ.

Если бэкСнд Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ пустой массив, Π·Π½Π°Ρ‡ΠΈΡ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ подходящСго Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π½Π΅Π±Ρ‹Π»ΠΎ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΠΉ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ с тСкстом "Sorry, there are no images matching your search query. Please try again.". Для ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ notiflix.

ГалСрСя ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° изобраТСния

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ div.gallery ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π΅ΡΡ‚ΡŒ Π² HTML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, ΠΈ Π² Π½Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€ΠΈ поискС ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ слову Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ содСрТимоС Π³Π°Π»Π΅Ρ€Π΅ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

<div class="gallery">
  <!-- ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ -->
</div>

Π¨Π°Π±Π»ΠΎΠ½ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ изобраТСния для Π³Π°Π»Π΅Ρ€Π΅ΠΈ.

<div class="photo-card">
  <img src="" alt="" loading="lazy" />
  <div class="info">
    <p class="info-item">
      <b>Likes</b>
    </p>
    <p class="info-item">
      <b>Views</b>
    </p>
    <p class="info-item">
      <b>Comments</b>
    </p>
    <p class="info-item">
      <b>Downloads</b>
    </p>
  </div>
</div>

ΠŸΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΡ

Pixabay API ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΈ прСдоставляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ page ΠΈ per_page. Π‘Π΄Π΅Π»Π°ΠΉ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎ 40 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 20).

  • Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° page Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ 1.
  • ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ запросС, Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π½Π° 1.
  • ΠŸΡ€ΠΈ поискС ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ слову Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ page Π½Π°Π΄ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² исходноС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ пагинация ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π’ HTML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅ ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ запрос Π·Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΊ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ элСмСнтам Π³Π°Π»Π΅Ρ€Π΅ΠΈ.

<button type="button" class="load-more">Load more</button>
  • Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ скрыта.
  • ПослС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ запроса ΠΊΠ½ΠΎΠΏΠΊΠ° появляСтся Π² интСрфСйсС ΠΏΠΎΠ΄ Π³Π°Π»Π΅Ρ€Π΅Π΅ΠΉ.
  • ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ сабмитС Ρ„ΠΎΡ€ΠΌΡ‹ ΠΊΠ½ΠΎΠΏΠΊΠ° сначала прячСтся, Π° послС запроса ΠΎΠΏΡΡ‚ΡŒ отобраТаСтся.

Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ бэкСнд Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ свойство totalHits - ΠΎΠ±Ρ‰Π΅Π΅ количСство ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ подошли ΠΏΠΎΠ΄ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ поиска (для бСсплатного Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°). Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ дошСл Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, пряч ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ с тСкстом "We're sorry, but you've reached the end of search results.".

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ

⚠️ Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π½Π΅ обязатСлСн ΠΏΡ€ΠΈ сдачС задания, Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ.

Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅

ПослС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ запроса ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ поискС Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ написано сколько всСго нашли ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (свойство totalHits). ВСкст увСдомлСния "Hooray! We found totalHits images."

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° SimpleLightbox

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ большой вСрсии изобраТСния с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ SimpleLightbox для ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ Π³Π°Π»Π΅Ρ€Π΅ΠΈ.

  • Π’ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ изобраТСния Π² ссылку, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.
  • Π£ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ refresh() ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· послС добавлСния Π½ΠΎΠ²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ CSS ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠΌΠΏΠΎΡ€Ρ‚, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описан Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

// Описан Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ
import SimpleLightbox from 'simplelightbox';
// Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ стилСй
import 'simplelightbox/dist/simple-lightbox.min.css';

ΠŸΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠ° страницы

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ»Π°Π²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΡƒ страницы послС запроса ΠΈ отрисовки ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’ΠΎΡ‚ Ρ‚Π΅Π±Π΅ ΠΊΠΎΠ΄ подсказка, Π° Ρ€Π°Π·Π±Π΅Ρ€ΠΈΡΡŒ Π² Π½Ρ‘ΠΌ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

const { height: cardHeight } = document
  .querySelector('.gallery')
  .firstElementChild.getBoundingClientRect();

window.scrollBy({
  top: cardHeight * 2,
  behavior: 'smooth',
});

БСсконСчный скролл

ВмСсто ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«Load moreΒ» ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠ΅ страницы. ΠœΡ‹ прСдоставлям Ρ‚Π΅Π±Π΅ ΠΏΠΎΠ»Π½ΡƒΡŽ свободу дСйствий Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, моТСшь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

===============================================================================

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Один Ρ€Π°Π· Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС зависимости.

npm ci

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ адрСсу http://localhost:1234.

npm run dev

Π”Π΅ΠΏΠ»ΠΎΠΉ

Π‘Π±ΠΎΡ€ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° GitHub Pages, Π² Π²Π΅Ρ‚ΠΊΡƒ gh-pages, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΊΠΎΠ³Π΄Π° обновляСтся Π²Π΅Ρ‚ΠΊΠ° main. НапримСр, послС прямого ΠΏΡƒΡˆΠ° ΠΈΠ»ΠΈ принятого ΠΏΡƒΠ»-рСквСста. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ package.json ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ homepage ΠΈ скрипт build, Π·Π°ΠΌΠ΅Π½ΠΈΠ² имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ имя_рСпозитория Π½Π° свои.

"homepage": "https://имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.github.io/имя_рСпозитория",
"scripts": {
  "build": "parcel build src/*.html --public-url /имя_рСпозитория/"
},

На всякий случай стоит Π·Π°ΠΉΡ‚ΠΈ Π² настройки рСпозитория Settings > Pages ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π°Π·Π΄Π°ΡŽΡ‚ΡΡ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ /root Π²Π΅Ρ‚ΠΊΠΈ gh-pages.

Π§Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя ΠΆΠΈΠ²ΡƒΡŽ страницу ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎ адрСсу ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π² ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ свойствС homepage, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ https://goitacademy.github.io/parcel-project-template.

Π€Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ

  • ВсС ΠΏΠ°Ρ€ΡˆΠ°Π»Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² стилСй Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Π² ΠΏΠ°ΠΏΠΊΠ΅ src/sass ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² src/sass/main.scss
  • Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ добавляйтС Π² ΠΏΠ°ΠΏΠΊΡƒ src/images, Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² ΠΈΡ…. Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊ просто ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ изобраТСния Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ систСму ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π° слабых ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… это ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.