ื‘ื™ืช ืกืคืจ ืœืคื™ืชื•ื— ืžืžืฉืงื™ื: ื ื™ืชื•ื— ืžืฉื™ืžื•ืช ืขื‘ื•ืจ ืžื™ื ืกืง ื•ืžืขืจื›ืช ื—ื“ืฉื” ื‘ืžื•ืกืงื‘ื”

ื”ื™ื•ื ื ืคืชื—ื” ื”ืจืฉืžื” ื—ื“ืฉื” ื‘ื™ืช ื”ืกืคืจ ืœืคื™ืชื•ื— ืžืžืฉืง Yandex ื‘ืžื•ืกืงื‘ื”. ื”ืฉืœื‘ ื”ืจืืฉื•ืŸ ืฉืœ ื”ื”ื›ืฉืจื” ื™ืชืงื™ื™ื ืžื”-7 ื‘ืกืคื˜ืžื‘ืจ ืขื“ ื”-25 ื‘ืื•ืงื˜ื•ื‘ืจ. ืกื˜ื•ื“ื ื˜ื™ื ืžืขืจื™ื ืื—ืจื•ืช ื™ื•ื›ืœื• ืœื”ืฉืชืชืฃ ื‘ื• ืžืจื—ื•ืง ืื• ื‘ืื•ืคืŸ ืื™ืฉื™ - ื”ื—ื‘ืจื” ืชืฉืœื ืขื‘ื•ืจ ื ืกื™ืขื•ืช ื•ืœื™ื ื” ื‘ืื›ืกื ื™ื”. ื”ืฉื ื™, ื’ื ื”ืฉืœื‘ ื”ืกื•ืคื™, ื™ื™ืžืฉืš ืขื“ ื”-3 ื‘ื“ืฆืžื‘ืจ, ื ื™ืชืŸ ืœื”ืฉืœื™ื ืื•ืชื• ืจืง ื‘ืื•ืคืŸ ืื™ืฉื™.

ืฉืžื™ ื™ื•ืœื™ื” ืกืจื“ื™ืฅ', ื›ืชื‘ื ื• ืืช ื”ืคื•ืกื˜ ื”ื–ื” ื‘ื™ื—ื“ ืขื ืกืจื’ื™ื™ ืงื–ืงื•ื‘. ืฉื ื™ื ื• ืžืคืชื—ื™ ืžืžืฉืงื™ื ื‘ืžืฉืจื“ ืžื™ื ืกืง ืฉืœ Yandex ื•ื‘ื•ื’ืจื™ SRI ืžืฉื ื™ื ืงื•ื“ืžื•ืช.

ื‘ื™ืช ืกืคืจ ืœืคื™ืชื•ื— ืžืžืฉืงื™ื: ื ื™ืชื•ื— ืžืฉื™ืžื•ืช ืขื‘ื•ืจ ืžื™ื ืกืง ื•ืžืขืจื›ืช ื—ื“ืฉื” ื‘ืžื•ืกืงื‘ื”

ืœืจื’ืœ ืคืชื™ื—ืช ื”ื”ืจืฉืžื” ื‘ืžื•ืกืงื‘ื”, ืื ื• ืžืคืจืกืžื™ื ื ื™ืชื•ื— ืžืฉื™ืžื•ืช ื”ื™ื›ืจื•ืช ืœื‘ื™ืช ื”ืกืคืจ ื”ืงื•ื“ื - ื›ืืŸ ื‘ืžื™ื ืกืง.

ืื ืืชื” ืขื•ืงื‘ ืื—ืจ ื”ื”ื™ืกื˜ื•ืจื™ื” ืฉืœ ืžื˜ืœื•ืช SRI, ืžืฉื ื” ืœืฉื ื” ื‘ื“ืงื ื• ืฉืœื•ืฉ ืžื™ื•ืžื ื•ื™ื•ืช ื—ืฉื•ื‘ื•ืช ืœืžืชื›ื ืช:

  • ืžึทืขึฒืจึธืš. ื›ืœ ืžืคืชื— ืฆืจื™ืš ืœื”ื™ื•ืช ืžืกื•ื’ืœ ืœืขืฉื•ืช ืคืจื™ืกื”. ืœื ืงื•ืจื” ืฉื™ืฉ ืœืš ืืช ื”ื“ื•ื“ ืกืจื™ื•ื–'ื” ืฉืžืขืฆื‘ ืœื›ืœ ื”ืฆื•ื•ืช, ื•ืืชื” ื›ื•ืชื‘ ืจืง ืชืกืจื™ื˜ื™ื. ืœื›ืŸ, ื›ืœ ืชืœืžื™ื“ ื—ื™ื™ื‘ ืœื”ืจืื•ืช ื›ื™ืฆื“ ื”ื•ื ื™ื•ื“ืข ืœื”ื’ื“ื™ืจ ื›ืชื™ื‘ื”.
  • JavaScript. ืื ื”ืขื ื™ื™ืŸ ื”ื™ื” ืžื•ื’ื‘ืœ ืœืคืจื™ืกื”, ืื– ืœื ื”ื™ื” ืœื ื• ื‘ื™ืช ืกืคืจ ืœืคื™ืชื•ื— ืžืžืฉืงื™ื, ืืœื ื‘ื™ืช ืกืคืจ ืœืžืขืฆื‘ื™ ืคืจื™ืกื”. ืฆืจื™ืš ืœื”ื—ื™ื•ืช ืืช ื”ืžืžืฉืง ื”ืžืขื•ืฆื‘ ืœื”ืคืœื™ื. ืœื›ืŸ, ืชืžื™ื“ ื™ืฉ ืžืฉื™ืžื” ืขื‘ื•ืจ JS, ืื‘ืœ ืœืคืขืžื™ื ื–ื• ื’ื ืžืฉื™ืžื” ืขื‘ื•ืจ ืืœื’ื•ืจื™ืชืžื™ื โ€“ ืื ื—ื ื• ื›ืœ ื›ืš ืื•ื”ื‘ื™ื ืื•ืชื.
  • ืคืชืจื•ืŸ ื‘ืขื™ื•ืช ื”ื•ื ืื•ืœื™ ื”ืžื™ื•ืžื ื•ืช ื”ื—ืฉื•ื‘ื” ื‘ื™ื•ืชืจ ืฉืœ ืžืคืชื—. ื›ืฉื–ื” ืžื’ื™ืข ืœื™ืฆื™ืจืช ืžืžืฉืงื™ื, ื“ื‘ืจื™ื ืžืฉืชื ื™ื ืžื”ืจ ืžืื•ื“. ื–ื” ื›ืžื• ืœื•ืื™ืก ืงืจื•ืœ: "ืืชื” ืฆืจื™ืš ืœืจื•ืฅ ื”ื›ื™ ืžื”ืจ ืฉืืชื” ื™ื›ื•ืœ ืจืง ื›ื“ื™ ืœื”ื™ืฉืืจ ื‘ืื•ืชื• ืžืงื•ื, ื•ื›ื“ื™ ืœื”ื’ื™ืข ืœืžืงื•ื ืื—ืจ ืืชื” ืฆืจื™ืš ืœืจื•ืฅ ืžื”ืจ ืคื™ ืฉื ื™ื™ื." ื‘ื›ืœ ื™ื•ื ืื ื• ื ืชืงืœื™ื ื‘ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ื—ื“ืฉื•ืช โ€“ ืขืœื™ื ื• ืœืงื—ืช ืื•ืชืŸ ื‘ื—ืฉื‘ื•ืŸ ื•ืœื”ื™ื•ืช ืžืกื•ื’ืœื™ื ืœื”ื‘ื™ืŸ ืื•ืชืŸ. ืœื›ืŸ, ื‘ืžืฉื™ืžื” ื”ืฉืœื™ืฉื™ืช, ื”ืฆืขื ื• ืœื”ื‘ื™ืŸ ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืฉืžืคืชื— ืžืชื—ื™ืœ ื‘ื“ืจืš ื›ืœืœ ืœื ืžื›ื™ืจ.

ื‘ื ื™ืชื•ื— ืฉืœ ื›ืœ ืžืฉื™ืžื”, ื ืกืคืจ ืœืš ืœื ืจืง ืขืœ ื”ื”ืœื™ืš ื”ื ื›ื•ืŸ, ืืœื ื’ื ืขืœ ื˜ืขื•ื™ื•ืช ื ืคื•ืฆื•ืช.

ืžืฉื™ืžื” 1: ืชื™ืง ืขื‘ื•ื“ื•ืช

ืขืœ ื”ืžืฉื™ืžื” ื”ืจืืฉื•ื ื” ืขื‘ื“ื• ืžืขืฆื‘ Yandex.Collections, ืืœื›ืกื™ื™ ืฆ'ืจื ืงื‘ื™ืฅ', ืฉื™ื•ื“ืข ืœืขืฉื•ืช ืคืจื™ืกื”, ื•ืขืžื™ืชื• ืœืฉื™ืจื•ืช, ืžืคืชื— ื”ืžืžืฉืงื™ื ืกืจื’ื™ื™ ืกืžืกื•ื ื•ื‘.

ืžืฆื‘

ืฆื•ืจ ืืชืจ ืชื™ืง ืขื‘ื•ื“ื•ืช: ืกืคืจ ืœื ื• ืขืœ ืขืฆืžืš, ืขืœ ืขื‘ื•ื“ืชืš ื•ืขืœ ื”ืฆื™ืคื™ื•ืช ืฉืœืš ืžื‘ื™ืช ื”ืกืคืจ. ื”ืืชืจ ืฆืจื™ืš ืœื”ืชืื™ื ื›ื›ืœ ื”ืืคืฉืจ ืœืคืจื™ืกื” ื”ืžื•ืฆืขืช (ืงื™ืฉื•ืจื™ื ืœืคืจื™ืกื•ืช: 1000px, 600px, 320px, ืžืคืจื˜). ืื ื—ื ื• ืžืขื•ื ื™ื™ื ื™ื ืจืง ื‘ืคืจื™ืกื”, ืื– ื ื ืœื ืœื”ืฉืชืžืฉ ื‘-JavaScript.

ื‘ืขืช ื”ื‘ื“ื™ืงื” ื ื™ืงื— ื‘ื—ืฉื‘ื•ืŸ:

  • ื’ื“ืœื™ ื”ื–ื—ื”, ื ื›ื•ื ื•ืช ื”ืฆื‘ืข, ืกื’ื ื•ืŸ ื”ื’ื•ืคืŸ, ื’ื•ื“ืœ ื”ื’ื•ืคืŸ;
  • ืคืจื™ืกื” ืกืžื ื˜ื™ืช;
  • ื ื•ื›ื—ื•ืชื ืฉืœ ืžืฆื‘ื™ื ืฉื•ื ื™ื ืฉืœ ืืœืžื ื˜ื™ื: ื”ืฆื’ืช ืœื—ืฆื ื™ื ื•ืงื™ืฉื•ืจื™ื ื‘ืขืช ืจื™ื—ื•ืฃ ืขื ื”ืกืžืŸ, ื”ื“ื’ืฉืช ืฉื“ื•ืช ืงืœื˜ ืคืขื™ืœื™ื ื•ื›ื•';
  • ืชืื™ืžื•ืช ื‘ื™ืŸ ื“ืคื“ืคื ื™ื (ื ื‘ื“ืงื” ื‘ื’ืจืกืื•ืช ื”ืื—ืจื•ื ื•ืช ืฉืœ ื“ืคื“ืคื ื™ื ืคื•ืคื•ืœืจื™ื™ื).

ื”ื™ืชืจื•ืŸ ื™ื”ื™ื”:

  • ืฉื™ืžื•ืฉ ื‘ืคืชืจื•ื ื•ืช CSS ืžื•ื“ืจื ื™ื™ื: flexbox, ืจืฉืช ื•ื›ื•';
  • ืคืจื™ืกื” ืื“ืคื˜ื™ื‘ื™ืช;
  • ืฉื™ืžื•ืฉ ื‘ืžืขื‘ื“ื™ ืงื“ื ื•(ืื•) ืคื•ืกื˜-ืžืขื‘ื“ื™ื, ื”ืจื›ื‘ื”, ืžื–ืขื•ืจ, ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืงื•ื“ ื”ืคืœื˜;
  • ืื™ืžื•ืช ื˜ื•ืคืก HTML, ื›ืคืชื•ืจ ื”ืขืœืืช ืงื•ื‘ืฅ ืžืกื•ื’ื ืŸ.

ื”ืžืฉื™ืžื” ื“ื™ ื ืจื—ื‘ืช, ืื– ืืชื” ื™ื›ื•ืœ ืœื“ืœื’ ืขืœ ืžื” ืฉืœื ื™ืขื‘ื•ื“. ื–ื” ื™ื•ืจื™ื“ ืžืขื˜ ืืช ื”ืฆื™ื•ืŸ ืฉืœืš, ืื‘ืœ ืขื“ื™ื™ืŸ ืชื•ื›ืœ ืœื”ืคื’ื™ืŸ ืืช ื”ื™ื“ืข ืฉืœืš. ื›ืฉืชืกื™ื™ื, ืฉืœื— ืœื ื• ืฉื ื™ ืงื™ืฉื•ืจื™ื - ืœืชื™ืง ื”ืขื‘ื•ื“ื•ืช ืฉืœืš ื•ืœืงื•ื“ ื”ืžืงื•ืจ ื‘-GitHub.

ื”ืคืจื™ืกื•ืช ืฉื”ื•ืฆืขื• ื‘ืžืฉื™ืžื” ืœื ื”ื™ื• ืจืง ืขื ืžืกื›ื™ื ืœืžื›ืฉื™ืจื™ื ื ื™ื™ื“ื™ื, ื˜ืื‘ืœื˜ื™ื ื•ืžื—ืฉื‘ื™ื ืฉื•ืœื—ื ื™ื™ื, ืืœื ื’ื ืขื ืžืคืจื˜ ืืžื™ืชื™.

ืขืœ ืžื ืช ืœื”ื›ื ื™ืก ื›ืžื” ืฉื™ื•ืชืจ ืื•ื‘ื™ื™ืงื˜ื™ื‘ื™ื•ืช ืœืชื•ืฆืื” ืฉืœ ื‘ื“ื™ืงืช ื”ืžืฉื™ืžื” ื”ืจืืฉื•ื ื”, ื”ื™ื• ื”ืจื‘ื” ืงืจื™ื˜ืจื™ื•ื ื™ื ืœื‘ื“ื™ืงื” ื–ื•.

ืงืจื™ื˜ืจื™ื•ื ื™ื

ืืชืจ ืžืขื•ืฆื‘. ื–ื” ื ืจืื” ืžื•ื‘ืŸ ืžืืœื™ื•, ืื‘ืœ ื›ืžื” ื‘ื—ื•ืจื™ื ื“ื™ืœื’ื• ืขืœ ื›ืžื” ื‘ืœื•ืงื™ื ืœื—ืœื•ื˜ื™ืŸ - ืื• ืฉื”ื ืจืฆื• ืœื—ืกื•ืš ื–ืžืŸ, ืื• ืฉื”ื ืœื ื™ื›ืœื• ืœืขืฉื•ืช ืื•ืชื. ืืช ื”ืคืจื™ืกื” ื ื™ืชืŸ ืœื—ืœืง ื‘ืื•ืคืŸ ื’ืก ืœืืจื‘ืขื” ืžืกื›ื™ื ืขื™ืงืจื™ื™ื: ื”ืžืกืš ื”ืจืืฉื™ ืขื ืื•ื•ื˜ืืจ, ื‘ืœื•ืง ืขื ืจืฉื™ืžืช ืฆื™ืคื™ื•ืช ืž-SRI, ื‘ืœื•ืง ืขื ืชื™ืง ืขื‘ื•ื“ื•ืช ื•ื‘ืœื•ืง ืขื ืคืจื˜ื™ ื”ืชืงืฉืจื•ืช. ื”ื ื™ื›ื•ืœื™ื ืœื”ื™ืขืฉื•ืช ื‘ืงื˜ืขื™ื ืื• ืคืฉื•ื˜ ื‘ืืžืฆืขื•ืช divs, ื”ืขื™ืงืจ ืฉื›ืœ ืืจื‘ืขืช ื”ื‘ืœื•ืงื™ื ื”ื™ื• ื–ืžื™ื ื™ื.

ื”ืชืืžื” ืฉืœ ืคืจื™ืกื” ืขื ืคืจื™ืกื”. ื”ืžืขืฆื‘ ืขืฉื” ืžืคืจื˜ ื ืคืจื“ (ื›ื•ืœืœ ืฆื‘ืขื™ื, ื˜ื™ืคื•ื’ืจืคื™ื”, ืžืฆื‘ื™ ื›ืคืชื•ืจื™ื ื•ื›ื•') ื›ื“ื™ ืœื”ืงืœ ืขืœ ื”ืžื•ืขืžื“ื™ื. ื‘ื—ืœืง ื”ืชื—ืชื•ืŸ ื”ื™ื” ืจืžื– ืขืœ ื”ื›ื ื™ืกื•ืช ื•ื”ืชื›ื•ื ื•ืช ืฉืœ ื”ืžืกืš ื”ืจืืฉื•ืŸ. ื”ื™ื™ืชื™ ืžืื•ื“ ืžืจื•ืฆื” ืžื”ื—ื‘ืจ'ื” ืฉืœืงื—ื• ื‘ื—ืฉื‘ื•ืŸ ืืช ื›ืœ ืจืฆื•ื ื•ืชื™ื• ืฉืœ ื”ืžืขืฆื‘: ืœืžืฉืœ, ื”ืžืกืš ื”ืจืืฉื•ืŸ ื”ื™ื” ืฆืจื™ืš ืœื”ื™ื•ืช ืœื ืคื—ื•ืช ืžื’ื•ื‘ื” ื”ืชืฆื•ื’ื”.

ืคืจื™ืกื” ืื“ืคื˜ื™ื‘ื™ืช - ื–ื” ื›ืฉื”ืžืžืฉืง ืœื ืกืชื ืคืจื•ืฉ ื›ืš ืฉื‘ืฉืœื•ืฉ ืจื–ื•ืœื•ืฆื™ื•ืช ื”ื›ืœ ืคื™ืงืกืœ ืœืคื™ืงืกืœ ื‘ืคืจื™ืกื”. ื‘ืžืฆื‘ื™ ื‘ื™ื ื™ื™ื, ื’ื ื”ืคืจื™ืกื” ืœื ืืžื•ืจื” ืœื”ืชืคืจืง. ื—ืœืง ืฉื›ื—ื• ืœื”ื’ื‘ื™ืœ ืืช ื”ืจื•ื—ื‘ ื”ืžืจื‘ื™ ืฉืœ ื”ืžื™ื›ืœ ื•ืœื”ื’ื“ื™ืจ ื”ื›ืœ ืœ-1920 ืคื™ืงืกืœื™ื, ื—ืœืง ืคื™ืฉืœื• ืืช ื”ืจืงืข, ืื‘ืœ ื‘ืกืš ื”ื›ืœ ื”ืžื•ืขืžื“ื™ื ื”ืชืžื•ื“ื“ื• ืขื ื”ืžืฉื™ืžื” ื”ื–ื• ื”ื™ื˜ื‘.

ืคืจื™ืกื” ืกืžื ื˜ื™ืช. "ื›ืžื” ืคืขืžื™ื ืืžืจื• ืœืขื•ืœื" ืฉื”ืงื™ืฉื•ืจ ืฆืจื™ืš ืœื”ื™ื•ืช ืžืขื•ืฆื‘ ื›- , ื”ื›ืคืชื•ืจ - ื›- . ืœืžืจื‘ื” ื”ืžื–ืœ, ืจื•ื‘ ื”ืžื•ืขืžื“ื™ื ืžื™ืœืื• ื’ื ื“ืจื™ืฉื” ื–ื•. ืœื ื›ื•ืœื ื–ื™ื”ื• ืืช ื”ืจืฉื™ืžื” ื”ื ืกืชืจืช ื‘ืฆื™ืคื™ื•ืช ืฉืœ ื”-SRI, ืžื” ืฉื”ื•ืคืš ืื•ืชื” ื‘ืืžืฆืขื•ืช ืชื’ื™ div, ืื‘ืœ ื–ื” ืœื ื›ืœ ื›ืš ื ื•ืจื. ื”ื™ื” ืžื•ืขืžื“ ืฉื”ื›ื ื™ืก ืืช ื›ืœ ื”ืชื’ื™ื•ืช ื”ืกืžื ื˜ื™ื•ืช ืฉื”ื›ื™ืจ โ€“ ืื™ืคื” ื–ื” ื ื—ื•ืฅ ื•ืื™ืคื” ืœื ื”ื™ื” ืฆื•ืจืš. ืœื“ื•ื’ืžื”, ื‘ืžืงื•ื ืจืฉื™ืžื” - ื• . ืื—ืจื™ ื”ื›ืœ, ืกืžื ื˜ื™ืงื” - ืžื“ื•ื‘ืจ ื‘ื”ื‘ื ืช ื”ื”ืจื›ื‘ ืฉืœ ื”ื“ืฃ ืฉืœืš ื•ืžื˜ืจืช ื›ืœ ื‘ืœื•ืง (ื”ืจื•ื‘ ื ื™ื”ืœื• ืืช ื–ื” ื›ืืŸ), ื›ืžื• ื’ื ื”ืฉื™ืžื•ืฉ ื‘ืžืขื‘ื“ื™ ืงื“ื ื•/ืื• ืคื•ืกื˜-ืžืขื‘ื“ื™ื (ื›ืžื” ืžื”ื ื”ืฆืœื™ื—ื• ื›ืืŸ, ืœืžืจื•ืช ืฉื–ื” ื”ื™ื” ื’ื ื‘ื ืงื•ื“ื•ืช - ืœืจื•ื‘ ื”ืฉืชืžืฉื• ื‘ืคื—ื•ืช ื•ื‘-scss) .

ืžื—ื•ื•ืŸ ืขื•ื‘ื“. ื‘ืžืฉื™ืžื” ื›ืชื‘ื ื• ืฉืœื ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘-JS. ื›ืืŸ ื ื‘ื“ืงื” ื”ื™ื›ื•ืœืช ืœืคืชื•ืจ ื‘ืขื™ื•ืช - ื ื™ืชืŸ ืœื™ืฆื•ืจ ืกืœื™ื™ื“ืจ ื‘ืืžืฆืขื•ืช ื—ื‘ื•ืจื” ื• . ื›ืœ ื”ืงืกื ืžืชืจื—ืฉ ื‘ืจืžืช ื”ื‘ื•ืจืจ #button-N:checked ~ .slider-inner .slider-slides. ื›ืืฉืจ ืื ื• ืœื•ื—ืฆื™ื ืขืœ ืื—ืช ืžืชื™ื‘ื•ืช ื”ืกื™ืžื•ืŸ ืฉืœ ื”ืงืœื˜, ื”ื™ื ืขื•ื‘ืจืช ืœืžืฆื‘ ืžืกื•ืžืŸ. ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื ืฆืœ ืืช ื–ื” ื•ืœื”ืงืฆื•ืช ืืช ื”ืชืจื’ื•ื ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืœืžื™ื›ืœ ืขื ื”ืฉืงื•ืคื™ื•ืช: transform: translate(-33%). ืืชื” ื™ื›ื•ืœ ืœืจืื•ืช ืืช ื”ื™ื™ืฉื•ื ืฉืœ ื”ืžื—ื•ื•ืŸ ื›ืืŸ.

ืจืฉื™ืžื•ืช ื ืคืชื—ื•ืช. ื›ืืŸ ื”ื›ืœ ื”ืกืชื›ื ื’ื ื•ื‘ื•ืจืจ ื“ื•ืžื”: .accordion-item input:checked ~ .accordion-item__content. ืืชื” ื™ื›ื•ืœ ืœืจืื•ืช ืืช ื”ื™ื™ืฉื•ื ื›ืืŸ.

ื–ืžื™ื ื•ืช ืฉืœ ืžืฆื‘ื™ :ืจื—ืฃ, :active ื•-:focu*. ื ืงื•ื“ื” ื—ืฉื•ื‘ื” ืžืื•ื“. ื”ื ื•ื—ื•ืช ื‘ืžื”ืœืš ื”ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”ืžืžืฉืง ื”ื™ื™ืชื” ืชืœื•ื™ื” ื‘ื•. ื”ืžืฉืชืžืฉ ืฆืจื™ืš ืชืžื™ื“ ืœืงื‘ืœ ืžืฉื•ื‘ ืขืœ ืคืขื•ืœื•ืชื™ื•. ืคืจื™ื˜ ื–ื” ื ื‘ื“ืง ืœืื•ืจืš ื›ืœ ื”ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”ืฉืืœื•ืŸ. ืื ืœื—ืฆืชื™ ืขืœ ื›ืคืชื•ืจ "ื”ืชืงืฉืจ ืืœื™" ื•ืžื‘ื—ื™ื ื” ื•ื™ื–ื•ืืœื™ืช ืœื ืงืจื” ื›ืœื•ื (ืœืžืจื•ืช ืฉื”ื‘ืงืฉื” ื ืฉืœื—ื”), ื–ื” ืจืข, ื›ื™ ืื– ืื ื™ ืืœื—ืฅ ืขืœื™ื” ืฉื•ื‘ ื•ืฉื•ื‘. ื›ืชื•ืฆืื” ืžื›ืš ื™ื™ืฉืœื—ื• ืขืฉืจ ื‘ืงืฉื•ืช ื•ืื—ื–ื•ืจ ืืœื™ ืขืฉืจ ืคืขืžื™ื. ืืกื•ืจ ืœืฉื›ื•ื— ืฉืœืžื›ืฉื™ืจื™ื ื ื™ื™ื“ื™ื ืื™ืŸ ืขื›ื‘ืจ, ืžื” ืฉืื•ืžืจ ืฉืœื ืฆืจื™ืš ืœื”ื™ื•ืช ืจื™ื—ื•ืฃ. ื•ืขื•ื“ ื ืงื•ื“ื” ืฉืœื ื”ืฉืคื™ืขื” ืขืœ ืžื™ ืฉื”ื’ืฉื™ื ืืช ื”ื ืงื•ื“ื” ืœื’ื‘ื™ ื”ืกืžื ื˜ื™ืงื”. ืื ื”ืฉืœื™ื˜ื” ืฉืœืš ืื™ื ื” ืืœืžื ื˜ ืื™ื ื˜ืจืืงื˜ื™ื‘ื™, ืื– ื›ืืฉืจ ืชืจื—ืฃ ืžืขืœื™ื•, ื”ืกืžืŸ ื™ื™ืฉืืจ ืกื˜ื ื“ืจื˜ื™. ื–ื” ื ืจืื” ืžืื•ื“ ืœื ืžืกื•ื“ืจ, ื’ื ืื ื›ืชื‘ืช ืชื’ื•ื‘ื” ืœืจื—ืฃ. ืืœ ืชื–ืœื–ืœ ื‘ืกืžืŸ: ืžืฆื‘ื™ืข.

ืื ื™ืžืฆื™ื•ืช. ื—ืฉื•ื‘ ืฉื›ืœ ื”ืชื’ื•ื‘ื•ืช ื”ืžืชืจื—ืฉื•ืช ืขื ื”ื™ืกื•ื“ื•ืช ื™ื”ื™ื• ื—ืœืงื•ืช. ืฉื•ื ื“ื‘ืจ ื‘ื—ื™ื™ื ืื™ื ื• ืžื™ื™ื“ื™, ื›ืš ืฉืžืขื‘ืจื™ื ืขืœ ืจื™ื—ื•ืฃ ื•ืคืขื™ืœื™ื ื”ืกืคื™ืงื• ื›ื“ื™ ืœื”ืคื•ืš ืืช ื”ืžืžืฉืง ืœื ืขื™ื ื™ื•ืชืจ. ื•ื‘ื›ืŸ, ืืœื” ืฉื”ื ืคื™ืฉื• ืืช ื”ืžื—ื•ื•ืŸ ื•ื”ืจืฉื™ืžื•ืช ื”ื ื‘ื“ืจืš ื›ืœืœ ื ื”ื“ืจื™ื.

ืฉื™ืžื•ืฉ ื‘ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ. ืื ืฉื™ื ืจื‘ื™ื ื”ืฉืชืžืฉื• ื‘-flex, ืื‘ืœ ืืฃ ืื—ื“ ืœื ื”ืฉืœื™ื ืืช ื”ืžืฉื™ืžื” ื‘ืืžืฆืขื•ืช ื’ืจื™ื“. ื”ื ืงื•ื“ื” ื ืกืคืจื” ืื ื ืขืฉื” ืฉื™ืžื•ืฉ ื ื›ื•ืŸ ื‘-flex. ืื ืื™ืคืฉื”ื• ื”ืคืจื™ืกื” ื”ืชืคืจืงื” ื‘ื’ืœืœ ื”ื’ืžื™ืฉื•ืช ื”ืืœื”, ืื‘ื•ื™, ืœื ืงื™ื‘ืœืช ื ืงื•ื“ื•ืช ื ื•ืกืคื•ืช.

ืื™ืžื•ืช ื˜ื•ืคืก. ื›ืœ ืฉื ื“ืจืฉ ื”ื™ื” ืœื”ื•ืกื™ืฃ ืืช ื”ืชื›ื•ื ื” ื”ื ื“ืจืฉืช ืœื›ืœ ืงืœื˜ ืฉืœ ื”ื˜ื•ืคืก. ื”ื•ืกืคื ื• ื ืงื•ื“ื•ืช ืœืžื™ ืฉืื™ืžืช ืืช ืฉื“ื” ื”ืื™ืžื™ื™ืœ ื›ืžื™ื™ืœ.

ืขื™ืฆื•ื‘ ื›ืคืชื•ืจ ื”ืขืœืืช ื”ืงื•ื‘ืฅ. ืฆื™ืคื™ื ื• ืœืจืื•ืช ืฉื™ืœื•ื‘ ื›ืžื•: ื•ื‘ื—ืจ ืงื•ื‘ืฅ . ื‘ืฉืœื‘ ื”ื‘ื ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืœื”ืกืชื™ืจ ืืช ื”ืงืœื˜ ื•ืœืขืฆื‘ ืืช ื”ืชื•ื•ื™ืช. ื™ืฉื ื” ื“ืจืš ื ืคื•ืฆื” ื ื•ืกืคืช - ืœื‘ืฆืข ืงืœื˜ ืฉืงื•ืฃ ื•ืœืฉื™ื ืื•ืชื• ืขืœ ื’ื‘ื™ ื”ื›ืคืชื•ืจ. ืื‘ืœ ืœื ื›ืœ ื”ื“ืคื“ืคื ื™ื ืžืืคืฉืจื™ื ืขื™ืฆื•ื‘ , ื•ืœื ื ื™ืชืŸ ืœืงืจื•ื ืœืคืชืจื•ืŸ ื›ื–ื” ื—ื•ืฆื” ื“ืคื“ืคืŸ. ื•ืžื‘ื—ื™ื ื” ืกืžื ื˜ื™ืช ื–ื” ื ื›ื•ืŸ ื™ื•ืชืจ ืœืขืฉื•ืช ืชื•ื•ื™ืช.

ืชืื™ืžื•ืช ื‘ื™ืŸ ื“ืคื“ืคื ื™ื. ื‘ื“ืงื ื• ืฉื”ื›ืœ ื‘ืกื“ืจ ื‘ืฉืชื™ ื”ื’ืจืกืื•ืช ื”ืื—ืจื•ื ื•ืช ืฉืœ ื”ื“ืคื“ืคื ื™ื ื”ืžื•ื“ืจื ื™ื™ื (ืœืœื IE - ืœืžืฉืชืชืคื™ื ื”ื™ื” ืžื–ืœ), ื•ื›ืŸ ื‘ืกืคืืจื™ ื‘ืื™ื™ืคื•ืŸ ื•ื›ืจื•ื ื‘ืื ื“ืจื•ืื™ื“ื™ื.

ืœื”ื™ืคืš, ื’ืจื›ื ื• ื ืงื•ื“ื•ืช ืื ืžื™ืฉื”ื• ื”ืฉืชืžืฉ ื‘-JS ืื• ื‘-Bootstrap: ืฉื ื™ื”ื ื™ื‘ื™ืกื• ืืช ืžื˜ืจืช ื”ืžืฉื™ืžื” ื›ื•ืœื”. ื™ืชืจ ืขืœ ื›ืŸ, ืžืฉืชืชืคื™ื ืขื Bootstrap ืœื ืจืง ืงื™ื‘ืœื• ืžื™ื ื•ืก, ืืœื ื’ื ืื™ื‘ื“ื• ื ืงื•ื“ื•ืช ืจื‘ื•ืช ืขื‘ื•ืจ ืกืžื ื˜ื™ืงื” ื•ืืœืžื ื˜ื™ื ืžื™ื•ืฉืžื™ื.

ืžื™ ืฉืื™ืจื— ืืช ื”ืืชืจ ืฉืœื”ื ืื™ืคืฉื”ื• ื‘ืื™ื ื˜ืจื ื˜ ืœื ืงื™ื‘ืœ ื™ืชืจื•ืŸ ืžื™ื•ื—ื“ - ืื‘ืœ ื”ืกื•ืงืจื™ื ืฉืžื—ื• ืžืื•ื“ ื›ืฉืœื ื ืืœืฆื• ืœื”ื•ืจื™ื“ ืžืื’ืจื™ื ื•ืœื”ืคืขื™ืœ ืื•ืชื ื‘ืื•ืคืŸ ืžืงื•ืžื™ ื‘ืžื—ืฉื‘. ืื– ื–ื” ืฉื™ืžืฉ ื™ืชืจื•ืŸ ืœืงืืจืžื”.

ื”ืžืฉื™ืžื” ื”ืจืืฉื•ื ื” ื”ื™ื™ืชื” ืžืื•ื“ ืฉื™ืžื•ืฉื™ืช ื‘ืขื™ืงืจ ืขื‘ื•ืจ ื”ืชืœืžื™ื“. ืœืžื™ ืฉืœื ืงื™ื‘ืœื ื• ื™ืฉ ืขื›ืฉื™ื• ืงื•ืจื•ืช ื—ื™ื™ื ืžื•ื›ื ื™ื - ืืชื ื™ื›ื•ืœื™ื ืœืฆืจืฃ ืื•ืชื ื‘ื’ืื•ื•ื” ืœื›ืœ ื”ืชื’ื•ื‘ื•ืช ืื• ืœืคืจืกื ืื•ืชื ื‘-gh-pages ืฉืœื›ื.

ืžืฉื™ืžื” 2: ื ืชื™ื‘ ืชื—ื‘ื•ืจื”

ืžื—ื‘ืจ ื”ืžืฉื™ืžื” ื”ื•ื ืจืืฉ ืงื‘ื•ืฆืช ืžืžืฉืงื™ ื”ื—ื™ืคื•ืฉ Denis Balyko.

ืžืฆื‘

ื™ืฉ ืœืš ืžืคืช ื›ื•ื›ื‘ื™ื? ื”ื•ื ืžืฆื™ื’ ืืช ืฉืžื• ืฉืœ ื›ืœ ื›ื•ื›ื‘, ื›ืžื• ื’ื ืืช ื”ืžืจื—ืง ืžืžื ื• ืœื›ื•ื›ื‘ื™ื ืื—ืจื™ื ื‘ืฉื ื™ื•ืช ืื•ืจ. ื”ื˜ืžื™ืข ืืช ืคื•ื ืงืฆื™ื™ืช ื”ืคืชืจื•ืŸ, ืฉืฆืจื™ื›ื” ืœืงื—ืช ืฉืœื•ืฉื” ืืจื’ื•ืžื ื˜ื™ื: ืื•ื‘ื™ื™ืงื˜ ืฉื‘ื• ื”ืžืคืชื—ื•ืช ื”ื ืฉืžื•ืช ื”ื›ื•ื›ื‘ื™ื, ื•ื”ืขืจื›ื™ื ื”ื ื”ืžืจื—ืงื™ื ืœื›ื•ื›ื‘ื™ื (ืชื ื•ืขื” ื—ื“-ื›ื™ื•ื•ื ื™ืช ื‘ืžืจื—ื‘), ื•ื›ืŸ ืฉืžื•ืชื™ื”ื ืฉืœ ื ืงื•ื“ื•ืช ื”ื”ืชื—ืœื” ื•ื”ืกื™ื•ื ืฉืœ ื”ืฉื‘ื™ืœ - ื”ืชื—ืœื” ื•ืกื™ื•ื, ื‘ื”ืชืืžื”. ื”ืคื•ื ืงืฆื™ื” ืฆืจื™ื›ื” ืœื”ื—ื–ื™ืจ ืืช ื”ืžืจื—ืง ื”ืงืฆืจ ื‘ื™ื•ืชืจ ืžื›ื•ื›ื‘ ื”ื”ืชื—ืœื” ืœื›ื•ื›ื‘ ื”ืกื™ื•ื ื•ื”ื ืชื™ื‘ ืฉืื—ืจื™ื•.

ื—ืชื™ืžืช ืคื•ื ืงืฆื™ื”:

const solution = function(graph, start, finish)  {
    // ะ’ะฐัˆะต ั€ะตัˆะตะฝะธะต
} 

ื ืชื•ื ื™ ืงืœื˜ ืœื“ื•ื’ืžื”:

const graph = {
  start: { A: 50, B: 20 },
  A: { C: 40, D: 20 },
  B: { A: 90, D: 90 },
  C: { D: 160, finish: 50 },
  D: { finish: 20 },
  finish: {}
};
const start = 'start';
const finish = 'finish'; 

ืคืœื˜ ืœื“ื•ื’ืžื”:

{
    distance: 90,
    path: ['start', 'A', 'D', 'finish']
} 

ื”ืขืจื”: ืฉืœื“ ื”ืคืชืจื•ืŸ ื ืžืฆื ื‘ืชื™ืงื™ื™ื” src/, ืฉื™ื ืืช ื”ืคืชืจื•ืŸ ืฉืœืš ื‘-solution.js.

ื”ืื™ืžื•ืช ืฉืœ ื”ืžืฉื™ืžื” ื”ืฉื ื™ื™ื” ื”ื™ื” ื”ืื•ื˜ื•ืžื˜ื™ ื•ื”ืื•ื‘ื™ื™ืงื˜ื™ื‘ื™ ื‘ื™ื•ืชืจ. ืจื•ื‘ ื”ื—ื‘ืจ'ื” ื ื™ื—ืฉื• ืฉื™ืฉ ืฆื•ืจืš ืœื™ื™ืฉื ืืช ื”ืืœื’ื•ืจื™ืชื ืฉืœ ื“ื™ืงืกื˜ืจื”. ืžื™ ืฉืžืฆื ืืช ื”ืชื™ืื•ืจ ืฉืœื• ื•ื”ื˜ืžื™ืข ืืช ื”ืืœื’ื•ืจื™ืชื ื‘-JS ื›ืœ ื”ื›ื‘ื•ื“. ืขื ื–ืืช, ื‘ืขืช ื‘ื“ื™ืงืช ื”ืžื˜ืœื”, ื ืชืงืœื ื• ื‘ืžืกืžื›ื™ื ืจื‘ื™ื ืขื ืื•ืชืŸ ืฉื’ื™ืื•ืช. ื—ื™ืคืฉื ื• ื‘ืื™ื ื˜ืจื ื˜ ืงื˜ืขื™ ืงื•ื“ ื•ืžืฆืื ื• ืžืืžืจ ืฉืžืžื ื• ื”ืขืชื™ืงื• ื”ืžืฉืชืชืคื™ื ืืช ื”ืืœื’ื•ืจื™ืชื. ื–ื” ืžืฆื—ื™ืง ืฉืื ืฉื™ื ืจื‘ื™ื ื”ืขืชื™ืงื• ืืช ื”ืงื•ื“ ืžื”ืžืืžืจ ื™ื—ื“ ืขื ื”ืขืจื•ืช ื”ืžื—ื‘ืจ. ืขื‘ื•ื“ื•ืช ื›ืืœื” ืงื™ื‘ืœื• ืฆื™ื•ืŸ ื ืžื•ืš. ืื ื—ื ื• ืœื ืื•ืกืจื™ื ืขืœ ืฉื™ืžื•ืฉ ื‘ืžืงื•ืจื•ืช ื›ืœืฉื”ื, ืื‘ืœ ืื ื—ื ื• ืจื•ืฆื™ื ืฉืื“ื ื™ืชืขืžืง ื‘ืžื” ืฉื”ื•ื ื›ื•ืชื‘.

ืงืจื™ื˜ืจื™ื•ื ื™ื

ื ืงื•ื“ื•ืช ืขื™ืงืจื™ื•ืช ื”ื•ืขื ืงื• ืœืžื‘ื—ื ื™ื. ืœืคืขืžื™ื ื”ื™ื” ื‘ืจื•ืจ ืฉื”ื—ื‘ืจ'ื” ืžืชืขืกืงื™ื ืขื ื”ืžืื’ืจ, ืžืฉื ื™ื ืืช ืฉืžื•ืช ื”ืชื™ืงื™ื•ืช ื•ื”ื‘ื“ื™ืงื•ืช ื™ื™ื›ืฉืœื• ืคืฉื•ื˜ ื›ื™ ื”ื ืœื ืžืฆืื• ืืช ื”ืงื‘ืฆื™ื ื”ื“ืจื•ืฉื™ื. ื”ืฉื ื” ื ื™ืกื™ื ื• ืœืขื–ื•ืจ ืœื‘ื—ื•ืจื™ื ื›ืืœื” ื•ื”ื—ื–ืจื ื• ืขื‘ื•ืจื ื”ื›ืœ ืœืžืงื•ืžื•. ืื‘ืœ ื‘ืฉื ื” ื”ื‘ืื” ืื ื—ื ื• ืžืชื›ื ื ื™ื ืœืขื‘ื•ืจ ืœืžืขืจื›ืช ืชื—ืจื•ื™ื•ืช, ื•ื–ื” ื›ื‘ืจ ืœื ื™ื™ืกืœื—.

ื”ื™ื• ื’ื ืงืจื™ื˜ืจื™ื•ื ื™ื "ืื ื•ืฉื™ื™ื", ื™ื“ื ื™ื™ื. ืœื“ื•ื’ืžื”, ื ื•ื›ื—ื•ืช ืฉืœ ืกื’ื ื•ืŸ ืงื•ื“ ื™ื—ื™ื“. ืืฃ ืื—ื“ ืœื ื”ื•ืจื™ื“ ื ืงื•ื“ื•ืช ืขืœ ืฉื™ืžื•ืฉ ื‘ื˜ืื‘ื™ื ื‘ืžืงื•ื ื‘ืจื•ื•ื—ื™ื ืื• ืœื”ื™ืคืš. ื–ื” ืขื ื™ื™ืŸ ืื—ืจ ืื ืืชื” ืžื—ืœื™ืฃ ืžืจื›ืื•ืช ื‘ื•ื“ื“ื•ืช ืขื ืžืจื›ืื•ืช ื›ืคื•ืœื•ืช ืœืคื™ ื›ืœืœ ืื—ื“ ื”ืžื•ื›ืจ ืœืš, ื•ืžืฆื™ื‘ ื ืงื•ื“ื•ืช ืคืกื™ืง ื‘ืืงืจืื™.

ื”ื‘ื”ื™ืจื•ืช ื•ื”ืงืจื™ืื•ืช ืฉืœ ื”ืคืชืจื•ืŸ ื ืœืงื—ื• ื‘ื—ืฉื‘ื•ืŸ ื‘ื ืคืจื“. ื‘ื›ืœ ื”ื›ื ืกื™ื ื‘ืขื•ืœื ืื•ืžืจื™ื ืฉ-80% ืžื”ืขื‘ื•ื“ื” ืฉืœ ืžืชื›ื ืช ืžื•ืจื›ื‘ืช ืžืงืจื™ืืช ืงื•ื“ ืฉืœ ืื ืฉื™ื ืื—ืจื™ื. ืืคื™ืœื• ืชืœืžื™ื“ื™ ื‘ื™ืช ืกืคืจ ืขื•ื‘ืจื™ื ื‘ื™ืงื•ืจื•ืช ืงื•ื“ - ืžื”ืื•ืฆืจื™ื ืฉืœื”ื ื•ื–ื” ืžื–ื”. ืื– ืœืงืจื™ื˜ืจื™ื•ืŸ ื–ื” ื”ื™ื” ืžืฉืงืœ ืžืฉืžืขื•ืชื™. ื”ื™ื• ืขื‘ื•ื“ื•ืช ืฉื‘ื”ืŸ ืœื ื”ื™ื• ืžืฉืชื ื™ื ืืจื•ื›ื™ ื˜ื•ื•ื— ืžืชื• ืื—ื“ - ื ื ืœื ืœืขืฉื•ืช ื–ืืช. ื”ื”ืขืจื•ืช ืฉืœ ื”ืžืฉืชืชืคื™ื ื”ื™ื• ืžืื•ื“ ืžืขื•ื“ื“ื•ืช - ืœืžืขื˜ ืืœื• ืฉื”ื™ื• ื–ื”ื•ืช ืœื”ืขืจื•ืชื™ื” ืฉืœ ืกื˜ืœื” ืฆ'ืื ื’.

ื”ืงืจื™ื˜ืจื™ื•ืŸ ื”ืื—ืจื•ืŸ ื”ื•ื ื ื•ื›ื—ื•ืช ืฉืœ ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช. ืจืง ื›ืžื” ืื ืฉื™ื ื”ื•ืกื™ืคื• ืื•ืชื, ืื‘ืœ ืขื‘ื•ืจ ื›ื•ืœื ื–ื” ื”ืคืš ืœื™ืชืจื•ืŸ ืขืฆื•ื ื‘ืงืืจืžื” ืฉืœื”ื.

ื”ื”ื—ืœื˜ื” ื”ื ื›ื•ื ื”:

const solution = function(graph, START, FINISH)  {
    // ะ’ัั‘ ะฝะต ะฑะตัะฟะปะฐั‚ะฝะพ ะฒ ัั‚ะพะผ ะผะธั€ะต
    const costs = Object.assign({[FINISH]: Infinity}, graph[START]);

    // ะŸะตั€ะฒะฐั ะฒะพะปะฝะฐ ั€ะพะดะธั‚ะตะปัŒัะบะธั… ะฝะพะด
    const parents = { [FINISH]: null };
    Object.keys(graph[START]).reduce((acc, child) => (acc[child] = START) && acc, parents)

    const visited = [];
    let node;

    // ะ˜ั‰ะตะผ ยซะดะตัˆั‘ะฒะพะณะพยป ั€ะพะดะธั‚ะตะปั, ะพั‚ะผะตั‡ะฐะตะผ ะฟั€ะพะนะดะตะฝะฝั‹ะต
    do {
        node = lowestCostNode(costs, visited);
        let children = graph[node];
        for (let n in children) {
            let newCost = costs[node] + children[n];

            // ะ•ั‰ั‘ ะฝะต ะพั†ะตะฝะตะฝะฐ ะธะปะธ ะฝะฐัˆั‘ะปัั ะฑะพะปะตะต ะดะตัˆั‘ะฒั‹ะน ะฟะตั€ะตั…ะพะด
            if (!costs[n] || costs[n] > newCost) {
                costs[n] = newCost;
                parents[n] = node;
            }
        }
        visited.push(node);
    } while (node)

    return {
        distance: costs[FINISH],
        path: optimalPath(parents)
    };

    // ะ’ะพะทะฒั€ะฐั‚ ะฝะฐะทะฐะด ะฟะพ ัะฐะผั‹ะผ ยซะดะตัˆั‘ะฒั‹ะผยป ั€ะพะดะธั‚ะตะปัะผ
    function optimalPath(parents) {
        let optimalPath = [FINISH];
        let parent = parents[FINISH];
        while (parent && parent !== START) {
            optimalPath.push(parent);
            parent = parents[parent];
        }
        optimalPath.push(START);
        return optimalPath.reverse();
    }

    // ะœะธะฝะธะผะฐะปัŒะฝะฐั ัั‚ะพะธะผะพัั‚ัŒ ะธะท ั‚ะตะบัƒั‰ะตะน ะฝะพะดั‹ ัั€ะตะดะธ ะฝะตะฟั€ะพัะผะพั‚ั€ะตะฝะฝั‹ั…
    function lowestCostNode(costs, visited) {
        return Object.keys(costs).reduce((lowest, node) => {
            if (lowest === null || costs[node] < costs[lowest]) {
                if (!visited.includes(node)) {
                    lowest = node;
                }
            }

            return lowest;
        }, null);
    };
};

ืžืฉื™ืžื” 3: ืœื•ื— ืื™ืจื•ืขื™ื

ื”ื•ื ื”ื•ื›ืŸ ืขืœ ื™ื“ื™ ืžืคืชื—ื™ ื”ืžืžืฉืง ืกืจื’ื™ื™ ืงื–ืงื•ื‘ ื•ืืœื›ืกื ื“ืจ ืคื•ื“ืกืงืจื‘ืงื™ืŸ.

ืžืฆื‘

ื›ืชื•ื‘ ืžื™ื ื™-ื™ื•ืžืŸ ื›ื“ื™ ืœื”ืฆื™ื’ ืืช ืœื•ื— ื”ื–ืžื ื™ื ืฉืœืš. ืืชื” ื™ื›ื•ืœ ืœืงื—ืช ื›ืœ ืœื•ื— ื–ืžื ื™ื ืฉืืชื” ืื•ื”ื‘. ืœื“ื•ื’ืžื”, ืœื•ื— ื”ื–ืžื ื™ื ืฉืœ ื›ื ืกื™ื ื—ื–ื™ืชื™ื™ื ื‘-2019.

ืœื•ื— ื”ืฉื ื” ืฆืจื™ืš ืœื”ื™ืจืื•ืช ื›ืžื• ืจืฉื™ืžื”. ืื™ืŸ ื“ืจื™ืฉื•ืช ืขื™ืฆื•ื‘ ืื—ืจื•ืช. ืืคืฉืจ ืœื”ื’ื“ื™ืจ ืชื–ื›ื•ืจื•ืช ืœืื™ืจื•ืขื™ื 3, 7 ื•-14 ื™ืžื™ื ืžืจืืฉ. ืœืื—ืจ ื”ื”ื•ืจื“ื” ื”ืจืืฉื•ื ื” ืžื”ืื™ื ื˜ืจื ื˜, ืœื•ื— ื”ืฉื ื” ืืžื•ืจ ืœื”ื™ืคืชื— ื•ืœืชืคืงื“ ื‘ืžืฆื‘ ืœื ืžืงื•ื•ืŸ.

ืžืฉืื‘ื™ื ืžื•ืขื™ืœื™ื

ืœื•ื— ื”ื–ืžื ื™ื ืฉืœ ื”ื›ื ืก ื”ืงื“ืžื™:
confs.tech/javascript?topics=javascript%2Bcss%2Bux

ืขื•ื‘ื“ื™ ืฉื™ืจื•ืช:
developer.mozilla.org/ru/docs/Web/API/Service_Worker_API/Using_Service_Workers
developers.google.com/web/fundamentals/primers/service-workers

API ืฉืœ ื”ืชืจืื•ืช:
developer.mozilla.org/ru/docs/Web/API/Notifications_API

ื”ืžืฉื™ืžื” ื”ืฉืœื™ืฉื™ืช ื”ื™ื™ืชื” ื”ืžืขื ื™ื™ื ืช ื‘ื™ื•ืชืจ ืœื‘ื“ื™ืงื”, ื›ื™ ื”ื™ื• ื›ืœ ื›ืš ื”ืจื‘ื” ืคืชืจื•ื ื•ืช ืืคืฉืจื™ื™ื, ืœื›ืœ ืื—ื“ ืžืฉืœื•. ื‘ื“ืงื ื• ืื™ืš ื”ืžื•ืขืžื“ ืžืชืžื•ื“ื“ ืขื ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืœื ืžื•ื›ืจื•ืช โ€“ ื”ืื ื”ื•ื ื™ื•ื“ืข ืœื—ืงื•ืจ, ื”ืื ื”ื•ื ื‘ื•ื“ืง ืืช ื”ืคืชืจื•ื ื•ืช ืฉืœื•.

ืงืจื™ื˜ืจื™ื•ื ื™ื

ืœื•ื— ืฉื ื” ืžืงื•ืคืœ. ื›ืŸ, ื–ื” ืขื“ื™ื™ืŸ ื”ื™ื” ืฆืจื™ืš ืœื”ื™ื•ืช ืคืจื•ืก. ื”ื™ื• ื’ื ื›ืืœื” ืฉืœืงื—ื• ืืช ื”ืชื ืื™ ื‘ืฆื•ืจื” ืžื™ืœื•ืœื™ืช ืžื“ื™ ื•ืœื ื”ื›ื ื™ืกื• ื•ืœื• ืฉื•ืจื” ืื—ืช ืฉืœ ืงื•ื“ CSS. ื–ื” ืœื ื ืจืื” ืžืื•ื“ ืื˜ืจืงื˜ื™ื‘ื™, ืื‘ืœ ืื ื”ื›ืœ ืขื‘ื“, ื”ื ืงื•ื“ื•ืช ืœื ื™ืจื“ื•.

ืงื‘ืœืช ืจืฉื™ืžืช ืื™ืจื•ืขื™ื ืžืžืงื•ืจ. ื–ื• ืื™ื ื” ืžืฉื™ืžืช ืคืจื™ืกื”, ื•ืœื›ืŸ ืจืฉื™ืžืช ื”ืื™ืจื•ืขื™ื ื”ื›ืœื•ืœื” ื‘ื” ืœื ื ืกืคืจื”. ืืชื” ืชืžื™ื“ ื™ื›ื•ืœ ืœื‘ื˜ืœ ื•ืขื™ื“ื”, ืœืชื–ืžืŸ ืื•ืชื” ืžื—ื“ืฉ ืื• ืœื”ื•ืกื™ืฃ ื•ืขื™ื“ื” ื—ื“ืฉื”. ืื– ื”ื™ื” ืฆื•ืจืš ืœืงื‘ืœ ื ืชื•ื ื™ื ืžื‘ื—ื•ืฅ ื•ืœืขื‘ื“ ืืช ื”ืคืจื™ืกื” ืขืœ ืกืžืš ื”-JSON ืฉื”ืชืงื‘ืœ. ื”ื™ื” ื—ืฉื•ื‘ ืœื”ืฉื™ื’ ืืช ื”ื ืชื•ื ื™ื ื‘ื›ืœ ื“ืจืš (ื‘ืืžืฆืขื•ืช ืฉื™ื˜ืช ื”ืื—ื–ื•ืจ ืื• ื‘ืืžืฆืขื•ืช XMLHttpRequest). ืื ืื“ื ื”ื•ืกื™ืฃ ืคื•ืœื™ืคื™ืœ ืœื”ื‘ืื” ื•ืกื™ืžืŸ ืืช ื‘ื—ื™ืจืชื• ื‘-readme, ื–ื” ื ื—ืฉื‘ ื›ืชื•ืกืคืช.

ืจื™ืฉื•ื ืขื•ื‘ื“ ืฉื™ืจื•ืช ืœืœื ืฉื’ื™ืื•ืช ื•ืขื‘ื•ื“ ื‘ืžืฆื‘ ืœื ืžืงื•ื•ืŸ ืœืื—ืจ ื”ื”ื•ืจื“ื” ื”ืจืืฉื•ื ื”. ื”ื ื” ื“ื•ื’ืžื”. service worker ืขื ืžื˜ืžื•ืŸ ืœื•ื— ื–ืžื ื™ื ื‘ืืชื—ื•ืœ ื”ืจืืฉื•ืŸ. ืคืจื˜ื™ื ืขืœ ืขื•ื‘ื“ื™ ืฉื™ืจื•ืช, ื™ื›ื•ืœื•ืชื™ื”ื ื•ื“ืจื›ื™ ื”ืขื‘ื•ื“ื” ืขื™ืžื (ืืกื˜ืจื˜ื’ื™ื•ืช ืœืขื‘ื•ื“ื” ืขื ืžื˜ืžื•ื ื™ื, ืขื‘ื•ื“ื” ืœื ืžืงื•ื•ื ืช) ื ื™ืชืŸ ืœืžืฆื•ื ื›ืืŸ.

ืืคืฉืจื•ืช ืœื”ื’ื“ื™ืจ ืชื–ื›ื•ืจืชื›ืš ืฉื–ื” ื‘ืืžืช ืขื•ื‘ื“ ืื—ืจื™ 3, 7, 14 ื™ืžื™ื. ื”ื™ื” ืฆื•ืจืš ืœื”ื‘ื™ืŸ ืืช ื”-API ืฉืœ ื”ืชืจืื•ืช, ืงื™ืฉื•ืจ ืœืื™ื–ื” ืขืžื“ ื‘ื“ื™ื•ืง ื‘ืžืฉื™ืžื”. ืœื ืฆื™ืคื™ื ื• ืœื™ื™ืฉื•ื ืกืคืฆื™ืคื™ ืฉื™ื‘ื“ื•ืง ืื ื”ื’ื™ืข ื”ื–ืžืŸ ืœื“ื—ื•ืฃ. ื›ืœ ืืคืฉืจื•ืช ืขื‘ื•ื“ื” ื”ืชืงื‘ืœื”: ืื—ืกื•ืŸ ื‘-localStorage, IndexDB ืื• ืกืงืจ ืชืงื•ืคืชื™ ืขืœ ื™ื“ื™ ืขื•ื‘ื“ ืฉื™ืจื•ืช. ืืคื™ืœื• ื”ื™ื” ืืคืฉืจ ืœื™ืฆื•ืจ ืฉืจืช ืคื•ืฉ (ื›ืืŸ ื“ื•ื’ืžื”), ืื‘ืœ ื–ื” ืœื ื™ืขื‘ื•ื“ ื‘ืžืฆื‘ ืœื ืžืงื•ื•ืŸ. ืœื ืคื—ื•ืช ื—ืฉื•ื‘ ื”ื™ื” ืœืงื‘ืœ ื“ื—ื™ืคื” ืœืื—ืจ ืกื’ื™ืจืช ื”ื“ืฃ - ื•ื ืคืชื— ืœืื—ืจ ื–ืžืŸ ืžื”. ืื ื”ืชื–ื›ื•ืจืช ืžืชื” ื‘ืื•ืชื• ื–ืžืŸ ืฉื”ื“ืฃ ื ืกื’ืจ, ื”ืคืชืจื•ืŸ ืœื ื ืกืคืจ. ื–ื” ืžื’ื ื™ื‘ ื›ืฉื”ื—ื‘ืจ'ื” ื—ืฉื‘ื• ืขืœ ื”ืกื•ืงืจื™ื ื•ืืคืฉืจื• ืœืงื‘ืœ ื“ื—ื™ืคื” ื›ื‘ืจ ืขื›ืฉื™ื• - ื›ื“ื™ ืœื ืœื—ื›ื•ืช 3 ื™ืžื™ื.

ื™ื›ื•ืœืช ื”ืฆื‘ืช ืื™ื™ืงื•ืŸ ืขืœ ืฉื•ืœื—ืŸ ื”ืขื‘ื•ื“ื” (PWA). ื‘ื“ืงื ื• ืืช ื ื•ื›ื—ื•ืช ื”ืงื•ื‘ืฅ ื’ืœื•ื‘ืœื™ ืขื ื”ืกืžืœื™ื ื”ื ื›ื•ื ื™ื. ื›ืžื” ื—ื‘ืจ'ื” ื™ืฆืจื• ืืช ื”ืงื•ื‘ืฅ ื”ื–ื” (ืื• ื”ืฉืื™ืจื• ืื•ืชื• ืฉื ื•ืฆืจ ื‘-CreateReactApp) - ืื‘ืœ ืœื ื”ื•ืกื™ืคื• ืืช ื”ืกืžืœื™ื ื”ื ื›ื•ื ื™ื. ืœืื—ืจ ืžื›ืŸ, ื‘ืขืช ื ื™ืกื™ื•ืŸ ื”ื”ืชืงื ื”, ื”ืชืจื—ืฉื” ืฉื’ื™ืื” ื›ืžื• "ื“ืจื•ืฉ ืกืžืœ ืื—ืจ".

ืกื’ื ื•ืŸ ืงื•ื“ ื•ืžื‘ื ื” ืคืจื•ื™ืงื˜. ื›ืžื• ื‘ืžืฉื™ืžื” ื”ืฉื ื™ื™ื”, ื”ืกืชื›ืœื ื• ืขืœ ืกื’ื ื•ืŸ ืงื•ื“ ื‘ื•ื“ื“ (ื’ื ืื ื”ื•ื ืœื ืขื•ืœื” ื‘ืงื ื” ืื—ื“ ืขื ืฉืœื ื•). ื›ืžื” ื—ื‘ืจ'ื” ื“ืคื•ืง ืขืœ ืจืฆื•ืขื•ืช - ื–ื” ื ื”ื“ืจ.

ืฉื’ื™ืื•ืช ืงื•ื ืกื•ืœื”. ืื ื”ื™ื” ืื™ื ื“ื™ืงื˜ื•ืจ ืžืžืฉ ื‘ืงื•ื ืกื•ืœื” ืฉืžืฉื”ื• ืœื ื‘ืกื“ืจ, ื•ื”ืžืฉืชืชืฃ ืœื ืฉื ืœื‘ ืœื–ื”, ืื– ืงื–ื–ื ื• ื ืงื•ื“ื•ืช.

ืชื•ืฆืื•ืช ืฉืœ

ืžื” ืฉืžืฆื—ื™ืง ื‘ื”ื—ืœื˜ื•ืช ื”ืžืฉืชืชืคื™ื:

  • ืฉืืœื•ืŸ ืื—ื“ ื”ื›ื™ืœ ืืช ื”ื˜ืงืกื˜ ื”ื‘ื: "ื—ื‘ืจ ืžืชื›ื ืช ืขื–ืจ ืœื™ ืœื”ืจื›ื™ื‘ ืืคืœื™ืงืฆื™ื™ืช React. ื”ืคืฆืฆืชื™ ืื•ืชื• ื‘ืฉืืœื•ืช ืขืœ ืื™ืš ื•ืœืžื”, ื•ื”ื•ื ืืžืจ ืœื™. ืžืื•ื“ ืื”ื‘ืชื™ ืืช ื–ื”, ืื ื™ ืจื•ืฆื” ืœื“ืขืช ื™ื•ืชืจ ืขืœ ื–ื”". ื—ื™ืคืฉื ื• ืืช ื”ื‘ืงืฉื” ื”ื–ื• ื‘ื›ืœ ืœื™ื‘ื ื•, ืืš ืœืžืจื‘ื” ื”ืฆืขืจ, ื—ื‘ืจื• ืฉืœ ื”ืžื•ืขืžื“ ืœื ืขื–ืจ ื‘ืžื™ื•ื—ื“ ื‘ื”ืคืขืœืช ื”ื‘ืงืฉื”.
  • ืžื•ืขืžื“ ืื—ื“ ืฉืœื— ืงื™ืฉื•ืจ ืœ-GitHub, ืฉื ื ืžืฆื ืืจื›ื™ื•ืŸ ื”-RAR - ืงืฉื” ืœื”ื’ื™ื‘ ืขืœ ื–ื”. ๐Ÿ™‚
  • ืžื•ืขืžื“ ืื—ืจ, ื‘ื”ืขืจื” ื‘ืฉื•ืจื” ื”ืจืืฉื•ื ื” ืฉืœ ืงื•ื‘ืฅ solution.js, ื”ื•ื“ื” ื‘ื™ื•ืฉืจ ืฉื”ืขืชื™ืง ืืช ื”ืืœื’ื•ืจื™ืชื.

ืงื™ื‘ืœื ื• ืคื ื™ื•ืช ืž-76 ืžื•ืขืžื“ื™ื ื•ื‘ื—ืจื ื• 23 ืื ืฉื™ื. ืฉืœื—ื• ืœื ื• ืฉืืœื•ื ื™ื ืœื ืจืง ืžืžื™ื ืกืง, ืืœื ื’ื ืžืžื•ืกืงื‘ื”, ืกื ื˜ ืคื˜ืจืกื‘ื•ืจื’ ื•ืืคื™ืœื• ื˜ื˜ืจืกื˜ืŸ. ื—ืœืง ืžื”ื—ื‘ืจ'ื” ื”ืคืชื™ืขื• ืื•ืชื ื• ืขื ื”ืžืงืฆื•ืขื•ืช ื”ื ื•ื›ื—ื™ื™ื ืฉืœื”ื: ืื—ื“ ืžื”ื ื”ื•ื ืžื•ืžื—ื” ืœื–ื™ื”ื•ื™ ืคืœื™ืœื™, ื•ื”ืฉื ื™ ื”ื•ื ืกื˜ื•ื“ื ื˜ ืœืจืคื•ืื”.

ื”ืชื•ืฆืื” ื”ื™ื™ืชื” ื—ืœื•ืงื” ืžืขื ื™ื™ื ืช ืฉืœ ืื—ื•ื–ื™ ื”ืฆืœื—ื” ื‘ื‘ื™ืฆื•ืข ืžืฉื™ืžื•ืช. ื”ืžืฉืชืชืคื™ื ื”ืฉืœื™ืžื• ืืช ื”ืžืฉื™ืžื” ื”ืจืืฉื•ื ื” ื‘ืžืžื•ืฆืข ืฉืœ 60%, ื”ืฉื ื™ื™ื” ื‘-50%, ื•ื”ืฉืœื™ืฉื™ืช ื”ืชื‘ืจืจื” ื›ืงืฉื” ื‘ื™ื•ืชืจ ื•ื”ื•ืฉืœืžื• ื‘ืžืžื•ืฆืข ืฉืœ 40%.

ื‘ืžื‘ื˜ ืจืืฉื•ืŸ, ื”ืžืฉื™ืžื•ืช ื ืจืื•ืช ืžื•ืจื›ื‘ื•ืช ื•ื’ื•ื–ืœื•ืช ื–ืžืŸ. ื”ืกื™ื‘ื” ื”ื™ื ืœื ืฉืื ื—ื ื• ืจื•ืฆื™ื ืœื ื›ื•ืช ื›ืžื” ืฉื™ื•ืชืจ ืžื•ืขืžื“ื™ื. ื‘ืžื”ืœืš ื”ืœื™ืžื•ื“ื™ื, ื”ืชืœืžื™ื“ื™ื ืžืชืžื•ื“ื“ื™ื ืขื ืžืฉื™ืžื•ืช ืžื”ื—ื™ื™ื ื”ืืžื™ืชื™ื™ื - ื™ืฆื™ืจืช ืฆ'ืื˜, Yandex.Music ืœื™ืœื“ื™ื ืื• Yandex.Weather ืœืื ืฉื™ื ืชืœื•ื™ื™ ืžื–ื’ ืื•ื•ื™ืจ. ื‘ืฉื‘ื™ืœ ื–ื” ืืชื” ืฆืจื™ืš ื‘ืกื™ืก ื”ืชื—ืœืชื™.

ืื ื™ ื–ื•ื›ืจ ืฉืจืื™ืชื™ ืืช ืžืฉื™ืžืช ื”ื›ื ื™ืกื” ืฉืœื™ ืœ-SRI ืœืคื ื™ ืฉื ืชื™ื™ื ื•ื—ืฉื‘ืชื™ ืฉืœืขื•ืœื ืœื ืืคืชื•ืจ ืื•ืชื”. ื”ืขื™ืงืจ ื‘ืจื’ืข ื–ื” ื”ื•ื ืœืฉื‘ืช, ืœืงืจื•ื ื‘ืขื™ื•ืŸ ืืช ื”ืชื ืื™ื ื•ืœื”ืชื—ื™ืœ ืœืขืฉื•ืช ื–ืืช. ืžืกืชื‘ืจ ืฉื”ืชื ืื™ื ืžื›ื™ืœื™ื ื›ืžืขื˜ 80% ืžื”ืชืžื™ืกื”. ืœื“ื•ื’ืžื”, ื‘ืžืฆื‘ ื”ืžืฉื™ืžื” ื”ืฉืœื™ืฉื™ืช (ื”ืงืฉื” ื‘ื™ื•ืชืจ), ื”ื•ืกืคื ื• ืงื™ืฉื•ืจื™ื ืœ-Service Workers ื•ืœ-Notifications API ื‘-MDN. ืกื˜ื•ื“ื ื˜ื™ื ืฉืœืžื“ื• ืืช ืชื•ื›ืŸ ื”ืงื™ืฉื•ืจื™ื ื”ืฉืœื™ืžื• ืื•ืชื• ืœืœื ืงื•ืฉื™.

ืื ื™ ืžืื•ื“ ืจื•ืฆื” ืฉื”ืžืืžืจ ื”ื–ื” ื™ื™ืงืจื ืขืœ ื™ื“ื™ ืžื•ืขืžื“ื™ื ืฉืžืชื›ื ื ื™ื ืœื”ื™ื›ื ืก ืœ-SRI ื‘ืขืชื™ื“, ืฉืœื ื”ืฆืœื™ื—ื• ืœื”ื™ื›ื ืก ืœื‘ื™ืช ื”ืกืคืจ ืžื™ื ืกืง, ืื• ืฉืžืชื—ื™ืœื™ื ืœื‘ืฆืข ื›ืœ ืžืฉื™ืžืช ืžื‘ื—ืŸ ืื—ืจืช. ื›ืคื™ ืฉืืชื” ื™ื›ื•ืœ ืœืจืื•ืช, ื–ื” ื‘ื”ื—ืœื˜ ืืคืฉืจื™ ืœืขืฉื•ืช ื–ืืช. ืืชื” ืจืง ืฆืจื™ืš ืœื”ืืžื™ืŸ ื‘ืขืฆืžืš ื•ืœื”ืงืฉื™ื‘ ืœื›ืœ ื”ื˜ื™ืคื™ื ืฉืœ ื”ืžื—ื‘ืจื™ื.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”