ืืืื ื ืคืชืื ืืจืฉืื ืืืฉื
ืฉืื ืืืืื ืกืจืืืฅ', ืืชืื ื ืืช ืืคืืกื ืืื ืืืื ืขื ืกืจืืื ืงืืงืื. ืฉื ืื ื ืืคืชืื ืืืฉืงืื ืืืฉืจื ืืื ืกืง ืฉื 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, ืื ื ืืฉื ืืชืืกืคืช.
ืจืืฉืื ืขืืื ืฉืืจืืช ืืื ืฉืืืืืช ืืขืืื ืืืฆื ืื ืืงืืื ืืืืจ ืืืืจืื ืืจืืฉืื ื.
ืืคืฉืจืืช ืืืืืืจ ืชืืืืจืชืื ืฉืื ืืืืช ืขืืื ืืืจื 3, 7, 14 ืืืื. ืืื ืฆืืจื ืืืืื ืืช ื-API ืฉื ืืชืจืืืช,
ืืืืืช ืืฆืืช ืืืืงืื ืขื ืฉืืืื ืืขืืืื (PWA). ืืืงื ื ืืช ื ืืืืืช ืืงืืืฅ
ืกืื ืื ืงืื ืืืื ื ืคืจืืืงื. ืืื ืืืฉืืื ืืฉื ืืื, ืืกืชืืื ื ืขื ืกืื ืื ืงืื ืืืื (ืื ืื ืืื ืื ืขืืื ืืงื ื ืืื ืขื ืฉืื ื). ืืื ืืืจ'ื ืืคืืง ืขื ืจืฆืืขืืช - ืื ื ืืืจ.
ืฉืืืืืช ืงืื ืกืืื. ืื ืืื ืืื ืืืงืืืจ ืืืฉ ืืงืื ืกืืื ืฉืืฉืื ืื ืืกืืจ, ืืืืฉืชืชืฃ ืื ืฉื ืื ืืื, ืื ืงืืื ื ื ืงืืืืช.
ืชืืฆืืืช ืฉื
ืื ืฉืืฆืืืง ืืืืืืืช ืืืฉืชืชืคืื:
- ืฉืืืื ืืื ืืืื ืืช ืืืงืกื ืืื: "ืืืจ ืืชืื ืช ืขืืจ ืื ืืืจืืื ืืคืืืงืฆืืืช 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