{"id":318389,"date":"2021-02-21T21:00:11","date_gmt":"2021-02-21T21:00:11","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=318389"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=318389","title":{"rendered":"\u0414\u0430\u0439\u0434\u0436\u0435\u0441\u0442 \u0441\u0432\u0435\u0436\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0438\u0437 \u043c\u0438\u0440\u0430 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043d\u0435\u0434\u0435\u043b\u044e \u2116455 (15 \u2014 21 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2021)"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0443 \u0441 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0438 \u043e\u043a\u043e\u043b\u043e \u043d\u0435\u0433\u043e.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/2w\/kg\/_q\/2wkg_q2pnorjf4_mtihzfacvdso.jpeg\"><\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p><a href=\"#media\"><b>\u041c\u0435\u0434\u0438\u0430<\/b><\/a>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#development\"><b>\u0412\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/b><\/a>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#css\"><b>CSS<\/b><\/a>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#js\"><b>JavaScript<\/b><\/a>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#browser\"><b>\u0411\u0440\u0430\u0443\u0437\u0435\u0440\u044b<\/b><\/a>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#interesting\"><b>\u0417\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435<\/b><\/a><\/p>\n<p>  <\/p>\n<h3><font color=\"#349A48\"><a name=\"media\"><\/a>\u041c\u0435\u0434\u0438\u0430<\/font><\/h3>\n<p>  \u2022 <img decoding=\"async\" alt=\"podcast\" src=\"https:\/\/habrastorage.org\/web\/259\/2f4\/069\/2592f40697cc49dc939e9fc3983fc737.png\"> <a href=\"https:\/\/soundcloud.com\/web-standards\/episode-269\" rel=\"nofollow noopener noreferrer\">\u041f\u043e\u0434\u043a\u0430\u0441\u0442 \u00ab\u0412\u0435\u0431-\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b\u00bb \u2116269. \u041f\u0440\u043e\u0449\u0430\u043d\u0438\u0435 \u0441 Edge, \u0432\u0435\u0431-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430, z-index, \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u0438\u043a\u0438, \u0430\u0442\u0430\u043a\u0430 \u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0438\u043d\u0434\u0438-\u0432\u0435\u0431, CTF<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"podcast\" src=\"https:\/\/habrastorage.org\/web\/259\/2f4\/069\/2592f40697cc49dc939e9fc3983fc737.png\"> <a href=\"https:\/\/soundcloud.com\/begebot\/no55-margin\" rel=\"nofollow noopener noreferrer\">\u041f\u043e\u0434\u043a\u0430\u0441\u0442 \u00ab\u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u043c\u043d\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u00bb \u211655 \u2014 \u041d\u0435 \u0435\u0448\u044c\u0442\u0435 \u0444\u0440\u0443\u043a\u0442\u044b, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 margin<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"podcast\" src=\"https:\/\/habrastorage.org\/web\/259\/2f4\/069\/2592f40697cc49dc939e9fc3983fc737.png\"> <a href=\"https:\/\/soundcloud.com\/frontend_u\/e173\" rel=\"nofollow noopener noreferrer\">\u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u042e\u043d\u043e\u0441\u0442\u044c (18+) #173: Make TypeScript JavaScript Again<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"podcast\" src=\"https:\/\/habrastorage.org\/web\/259\/2f4\/069\/2592f40697cc49dc939e9fc3983fc737.png\"> <a href=\"https:\/\/soundcloud.com\/csssr\/typescript-42-rc-doloy-express-data-i-vremya-na-js-lerna-400-mocha-830-holyjs-moscow-2020\" rel=\"nofollow noopener noreferrer\">\u00ab\u041d\u043e\u0432\u043e\u0441\u0442\u0438 512\u00bb \u043e\u0442 CSSSR: TypeScript 4.2 RC, \u0434\u043e\u043b\u043e\u0439 Express, \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 JS, Lerna 4.0.0, Mocha 8.3.0, HolyJS Moscow 2020<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"podcast\" src=\"https:\/\/habrastorage.org\/web\/259\/2f4\/069\/2592f40697cc49dc939e9fc3983fc737.png\"> <a href=\"https:\/\/soundcloud.com\/csssr\/devtools-lyambdy-na-ts-intervyu-s-brendanom-aykom-angular-12-next-nodejs-1590-nuxtjs-2150\" rel=\"nofollow noopener noreferrer\">\u00ab\u041d\u043e\u0432\u043e\u0441\u0442\u0438 512\u00bb \u043e\u0442 CSSSR: DevTools, \u043b\u044f\u043c\u0431\u0434\u044b \u043d\u0430 TS, \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0441 \u0411\u0440\u0435\u043d\u0434\u0430\u043d\u043e\u043c \u0410\u0439\u043a\u043e\u043c, Angular 12 next, Node.js 15.9.0, Nuxt.js 2.15.0<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"video\" src=\"https:\/\/habrastorage.org\/storage3\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"> <a href=\"https:\/\/www.youtube.com\/watch?v=3D0IVhYzXJM\" rel=\"nofollow noopener noreferrer\">\u041e\u0442\u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 #2: \u0421\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043c\u0435\u043b\u043e\u0433\u043e Frontend Middle \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<\/a><\/p>\n<h3><font color=\"#349A48\"><a name=\"development\"><\/a>\u0412\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/font><\/h3>\n<p>  \u2022 <img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/storage2\/c57\/b92\/af4\/c57b92af4ee0d37f787c211a068b1b95.png\"> <a href=\"https:\/\/habr.com\/ru\/company\/skyeng\/blog\/543024\/\">\u0413\u0440\u0430\u0431\u043b\u0438 WebRTC: \u043a\u0430\u043a \u043c\u044b \u0434\u043e\u043f\u0438\u043b\u0438\u0432\u0430\u043b\u0438 \u0447\u0443\u0436\u043e\u0439 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434<\/a><br \/>  \u2022 <a href=\"https:\/\/jem-space.ru\/pwa_develop_and_deploy\/\" rel=\"nofollow noopener noreferrer\">\u041f\u0438\u0448\u0435\u043c \u0441\u0430\u0439\u0442\/PWA \u0438 \u0432\u044b\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0432 \u043f\u0440\u043e\u0434 \u0441 Github Actions<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/mangools.com\/blog\/learn-seo\/\" rel=\"nofollow noopener noreferrer\">\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e SEO \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 <\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/bradfrost.com\/blog\/post\/front-of-the-front-end-and-back-of-the-front-end-web-development\/\" rel=\"nofollow noopener noreferrer\">\u0424\u0440\u043e\u043d\u0442 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0438 \u0442\u044b\u043b \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0432 \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/blog.scottlogic.com\/2021\/02\/17\/probably-dont-need-microfrontends.html\" rel=\"nofollow noopener noreferrer\">\u0412\u0430\u043c, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043c\u0438\u043a\u0440\u043e-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/web.dev\/building-a-tabs-component\/\" rel=\"nofollow noopener noreferrer\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 Tab \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/dev.to\/zippytyro\/how-to-convert-any-website-webpage-into-an-installable-progressive-web-app-pwa-59ai\" rel=\"nofollow noopener noreferrer\">\u041a\u0430\u043a \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0441\u0430\u0439\u0442\/\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e\u0435 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (PWA)<\/a><\/p>\n<ul>\n<li><strong>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/strong><br \/>   \u2022 <img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/storage2\/c57\/b92\/af4\/c57b92af4ee0d37f787c211a068b1b95.png\"> <a href=\"https:\/\/habr.com\/ru\/company\/quarkly\/blog\/543096\/\">\u0421\u0435\u0440\u0434\u0446\u0435, \u043d\u0435 \u043f\u043e\u0437\u043d\u0430\u0432\u0448\u0435\u0435 \u0431\u043e\u043b\u0438 \u0440\u0430\u0437\u043e\u0447\u0430\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u0435 \u0437\u043d\u0430\u043b\u043e \u0438 \u0440\u0430\u0434\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0451\u0442\u0430<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/storage2\/c57\/b92\/af4\/c57b92af4ee0d37f787c211a068b1b95.png\"> <a href=\"https:\/\/habr.com\/ru\/post\/542812\/\">\u0410\u043d\u043e\u043d\u0441 Vite 2.0<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/www.smashingmagazine.com\/2021\/02\/useful-chrome-firefox-devtools-tips-shortcuts\/\" rel=\"nofollow noopener noreferrer\">\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b \u0438 \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0432 DevTools (Chrome, Firefox, Edge)<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/www.sitepoint.com\/learn-snowpack\/\" rel=\"nofollow noopener noreferrer\">\u0418\u0437\u0443\u0447\u0435\u043d\u0438\u0435 Snowpack: \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/blog.logrocket.com\/changes-coming-to-webpack-in-2021\/\" rel=\"nofollow noopener noreferrer\">\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 webpack \u0432 2021 \u0433\u043e\u0434\u0443 <\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/blog.bitsrc.io\/zero-server-introduction-build-modern-web-apps-without-any-configurations-792791da89a8\" rel=\"nofollow noopener noreferrer\">Zero Server: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u2014 \u0438 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/blog.bitsrc.io\/npm-cli-v7-0-the-top-five-features-that-grabbed-my-attention-7f50ef7d6533\" rel=\"nofollow noopener noreferrer\">NPM CLI v7.0\u2014 \u041f\u044f\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0448\u0438\u0445 \u043c\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 <\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li><strong>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/strong><br \/>   \u2022 <img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/storage2\/c57\/b92\/af4\/c57b92af4ee0d37f787c211a068b1b95.png\"> <a href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/543434\/\">\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0431-\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 2021 \u0433\u043e\u0434\u0443<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/www.smashingmagazine.com\/2021\/02\/optimizing-video-size-quality\/\" rel=\"nofollow noopener noreferrer\">\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0438\u0434\u0435\u043e \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/www.industrialempathy.com\/posts\/avif-webp-quality-settings\/\" rel=\"nofollow noopener noreferrer\">\u041a\u0430\u043a \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0434\u043b\u044f AVIF \u0438 WebP <\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/blog.bitsrc.io\/6-principles-for-performant-web-applications-7b9b8357edce\" rel=\"nofollow noopener noreferrer\">6 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 <\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li><strong>\u042d\u0444\u0444\u0435\u043a\u0442\u044b<\/strong><br \/>   \u2022 <img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/storage2\/c57\/b92\/af4\/c57b92af4ee0d37f787c211a068b1b95.png\"> <a href=\"https:\/\/habr.com\/ru\/post\/542698\/\">\u0428\u0435\u0439\u0434\u0435\u0440\u044b, Three.js \u0438 \u043a\u0438\u0431\u0435\u0440\u043f\u0430\u043d\u043a. \u041a\u0430\u043a \u043c\u044b \u0434\u0435\u043b\u0430\u043b\u0438 \u043b\u0435\u043d\u0434\u0438\u043d\u0433 \u0432 \u043d\u0435\u043e\u043d\u043e\u0432\u043e-\u0430\u043d\u0442\u0438\u0447\u043d\u043e\u0439 \u0441\u0442\u0438\u043b\u0438\u0441\u0442\u0438\u043a\u0435<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/tympanus.net\/codrops\/2021\/02\/17\/ideas-for-css-button-hover-animations\/\" rel=\"nofollow noopener noreferrer\">\u0418\u0434\u0435\u0438 \u0434\u043b\u044f CSS-\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438 <\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/www.awwwards.com\/page-transitions-creative-examples-resources-and-some-tips.html\" rel=\"nofollow noopener noreferrer\">\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438: \u043a\u0440\u0435\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b<\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<h3><font color=\"#349A48\"><a name=\"css\"><\/a>CSS<\/font><\/h3>\n<p>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/css-tricks.com\/how-to-create-a-shrinking-header-on-scroll-without-javascript\/\" rel=\"nofollow noopener noreferrer\">\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u0438\u043f\u0430\u044e\u0449\u0438\u0439 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0445\u0435\u0434\u0435\u0440 \u043f\u0440\u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0435 \u0431\u0435\u0437 JavaScript<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/css-tricks.com\/css-switch-case-conditions\/\" rel=\"nofollow noopener noreferrer\"> \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0438 \u0441 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 \u0432 CSS <\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/hugogiraudel.com\/2021\/02\/17\/hiding-content-responsibly\/\" rel=\"nofollow noopener noreferrer\">\u041e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/www.telerik.com\/blogs\/what-you-need-to-know-css-in-js-2021\" rel=\"nofollow noopener noreferrer\">\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043e CSS-in-JS \u043d\u0430 2021 \u0433\u043e\u0434<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/blog.bitsrc.io\/debugging-css-grid-like-a-pro-96769527a751\" rel=\"nofollow noopener noreferrer\">\u041e\u0442\u043b\u0430\u0434\u043a\u0430 CSS Grid \u043a\u0430\u043a \u043f\u0440\u043e\u0444\u0438<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/css-tricks.com\/use-css-clamp-to-create-a-more-flexible-wrapper-utility\/\" rel=\"nofollow noopener noreferrer\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 CSS Clamp \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u043e\u0439 \u043e\u0431\u0435\u0440\u0442\u043a\u0438 <\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/css-tricks.com\/three-ways-to-blob-with-css-and-svg\/\" rel=\"nofollow noopener noreferrer\">\u0422\u0440\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f blob-\u0444\u043e\u0440\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CSS \u0438 SVG<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/barhatsor.medium.com\/creating-3d-worlds-with-css-21186d754984\" rel=\"nofollow noopener noreferrer\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0440\u0435\u0445\u043c\u0435\u0440\u043d\u044b\u0445 \u043c\u0438\u0440\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CSS <\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"video\" src=\"https:\/\/habrastorage.org\/storage3\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"> <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/blog.tailwindcss.com\/tailwindcss-from-zero-to-production\" rel=\"nofollow noopener noreferrer\">\u041a\u0443\u0440\u0441 \u00abTailwind CSS: From Zero to Production\u00bb \u043d\u0430 YouTube<\/a><\/p>\n<h3><font color=\"#349A48\"><a name=\"js\"><\/a>JavaScript<\/font><\/h3>\n<p>  \u2022 <img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/storage2\/c57\/b92\/af4\/c57b92af4ee0d37f787c211a068b1b95.png\"> <a href=\"https:\/\/habr.com\/ru\/company\/timeweb\/blog\/543456\/\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 JavaScript-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u0434\u043e\u043b\u0433\u043e\u0441\u0440\u043e\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435<\/a><br \/>  \u2022 <a href=\"https:\/\/tproger.ru\/translations\/upravlenie-pamjatju-v-javascript\/\" rel=\"nofollow noopener noreferrer\">\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0432 JavaScript<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/www.onely.com\/blog\/javascript-redirects-and-seo\/\" rel=\"nofollow noopener noreferrer\">\u0420\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u044b JavaScript \u0438 SEO<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/www.telerik.com\/blogs\/introduction-mixins-typescript\" rel=\"nofollow noopener noreferrer\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043c\u0438\u043a\u0441\u0438\u043d\u044b \u0432 TypeScript<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/v8.dev\/blog\/adaptor-frame\" rel=\"nofollow noopener noreferrer\">\u0411\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b JavaScript<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/dmitripavlutin.com\/enhance-fetch-with-decorator-pattern\/\" rel=\"nofollow noopener noreferrer\">\u041a\u0430\u043a \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c fetch() \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Decorator Pattern <\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/benfrain.com\/building-a-table-of-contents-with-active-indicator-using-javascript-intersection-observers\/\" rel=\"nofollow noopener noreferrer\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e JavaScript Intersection Observers <\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/js.plainenglish.io\/20-funny-javascript-memes-18b22d55710a\" rel=\"nofollow noopener noreferrer\">20 \u0437\u0430\u0431\u0430\u0432\u043d\u044b\u0445 JavaScript-\u043c\u0435\u043c\u043e\u0432<\/a><\/p>\n<ul>\n<li><strong>\u0422\u0435\u043e\u0440\u0438\u044f<\/strong><br \/>   \u2022 <a href=\"https:\/\/webdevblog.ru\/luchshee-obyasnenie-raboty-event-loop-v-javascript-ot-jake-archibald\/\" rel=\"nofollow noopener noreferrer\">\u041b\u0443\u0447\u0448\u0435\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b Event Loop \u0432 JavaScript \u043e\u0442 Jake Archibald<\/a><br \/>   \u2022 <a href=\"https:\/\/webdevblog.ru\/7-voprosov-dlya-sobesedovaniya-o-zamykanie-v-javascript-smozhete-li-vy-na-nih-otvetit\/\" rel=\"nofollow noopener noreferrer\">7 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0432 JavaScript. \u0421\u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b \u043d\u0430 \u043d\u0438\u0445 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c?<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/medium.com\/javascript-in-plain-english\/beginners-guide-to-debouncing-vs-throttling-19d663f0ff43\" rel=\"nofollow noopener noreferrer\">\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u043f\u043e Debouncing vs Throttling<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/js.plainenglish.io\/handle-javascript-events-like-a-pro-8bfd67e6b684\" rel=\"nofollow noopener noreferrer\">\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f JavaScript \u043a\u0430\u043a \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b <\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/webreflection.medium.com\/js-benchmarking-lazy-getters-9b132f45c15e\" rel=\"nofollow noopener noreferrer\">JS: Benchmarking Lazy Getters<\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li><strong>React<\/strong><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/medium.com\/better-programming\/stop-lying-to-react-about-missing-dependencies-10612e9aeeda\" rel=\"nofollow noopener noreferrer\">\u041f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u044c\u0442\u0435 \u043b\u0433\u0430\u0442\u044c React \u043f\u0440\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 <\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/dev.to\/bluebill1049\/what-s-coming-in-react-hook-form-version-7-4bfa\" rel=\"nofollow noopener noreferrer\">\u0427\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432 \u0444\u043e\u0440\u043c\u0435 React Hook \u0432\u0435\u0440\u0441\u0438\u0438 7<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/www.freecodecamp.org\/news\/fetch-data-react\/\" rel=\"nofollow noopener noreferrer\">\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 React: \u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0430 + \u043f\u0440\u0438\u043c\u0435\u0440\u044b<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/blog.logrocket.com\/rtk-query-future-data-fetching-caching-redux\/\" rel=\"nofollow noopener noreferrer\">RTK Query: \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f Redux <\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/blog.logrocket.com\/wmr-the-swiss-army-knife-for-web-apps\/\" rel=\"nofollow noopener noreferrer\">WMR: \u0448\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u043a\u0438\u0439 \u043d\u043e\u0436 \u0434\u043b\u044f \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 <\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/epicreact.dev\/css-variables\/\" rel=\"nofollow noopener noreferrer\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 CSS \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432\u043c\u0435\u0441\u0442\u043e React Context<\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li><strong>Vue<\/strong><br \/>   \u2022 <img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/storage2\/c57\/b92\/af4\/c57b92af4ee0d37f787c211a068b1b95.png\"> <a href=\"https:\/\/habr.com\/ru\/post\/543298\/\">\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 vue \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/itnext.io\/yes-here-are-4-ways-to-handle-seo-with-vue-even-without-node-ssr-719f7d8b02bb\" rel=\"nofollow noopener noreferrer\">4 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441 SEO \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Vue (\u0434\u0430\u0436\u0435 \u0431\u0435\u0437 Node SSR) <\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li><strong>Angular<\/strong><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/medium.com\/scrum-and-coke\/angular-11-pagination-of-zillion-rows-45d8533538c0\" rel=\"nofollow noopener noreferrer\">\u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 Angular 11 \u0434\u043b\u044f 100,000+ \u0441\u0442\u0440\u043e\u043a<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/indepth.dev\/posts\/1415\/implementing-reusable-and-reactive-forms-in-angular-2\" rel=\"nofollow noopener noreferrer\">\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0438 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0444\u043e\u0440\u043c \u0432 Angular <\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/indepth.dev\/posts\/1425\/how-to-refactor-an-angular-codebase\" rel=\"nofollow noopener noreferrer\">\u041a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b Angular<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/blog.sreyaj.dev\/dynamically-update-title-and-meta-tags-angular\" rel=\"nofollow noopener noreferrer\">\u041a\u0430\u043a \u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u043c\u0435\u0442\u0430\u0442\u0435\u0433\u0438 \u0432 \u043c\u043e\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 Angular <\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/blog.sreyaj.dev\/implementing-feature-flags-in-angular\" rel=\"nofollow noopener noreferrer\">\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043b\u0430\u0433\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 Angular \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u0432\u044b \u0434\u0443\u043c\u0430\u043b\u0438!<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/daily-dev-tips.com\/posts\/optimizing-angular-universal-for-seo\/\" rel=\"nofollow noopener noreferrer\">\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f Angular Universal \u0434\u043b\u044f SEO<\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li><strong>Ember<\/strong><br \/>   \u2022 <img decoding=\"async\" alt=\"podcast\" src=\"https:\/\/habrastorage.org\/web\/259\/2f4\/069\/2592f40697cc49dc939e9fc3983fc737.png\"> <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/audio.ember.report\/\" rel=\"nofollow noopener noreferrer\">The Ember Report #001: Building Native Apps With Ember.js<\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"video\" src=\"https:\/\/habrastorage.org\/storage3\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"> <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/www.youtube.com\/watch?v=1agre0KV1A0&amp;amp;feature=youtu.be\" rel=\"nofollow noopener noreferrer\">\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u2014 EmberJS Octane<\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li><strong>Svelte<\/strong><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/dev.to\/daveturissini\/fetching-data-in-svelte-1jpn\" rel=\"nofollow noopener noreferrer\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Svelte <\/a><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/blog.julien-maury.dev\/en\/svelte-bindings\/\" rel=\"nofollow noopener noreferrer\">\u041a\u043b\u0435\u0432\u044b\u0435 \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0438 \u0441\u043e Svelte<\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li><strong>Libs &amp; Plugins<\/strong><br \/>   \u2022 <img decoding=\"async\" alt=\"en\" src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"> <a href=\"https:\/\/hugogiraudel.github.io\/a11y-dialog\/#a11y-dialog\" rel=\"nofollow noopener noreferrer\">a11y-dialog \u2014 \u043b\u0435\u0433\u043a\u0438\u0439 (1,6 \u041a\u0411), \u043d\u043e \u0433\u0438\u0431\u043a\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u043e\u043a\u043e\u043d. <\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<h3><font color=\"#349A48\"><a name=\"browser\"><\/a>\u0411\u0440\u0430\u0443\u0437\u0435\u0440\u044b<\/font><\/h3>\n<p>  \u2022 <img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/storage2\/c57\/b92\/af4\/c57b92af4ee0d37f787c211a068b1b95.png\"> <a href=\"https:\/\/habr.com\/ru\/post\/543282\/\">\u041d\u043e\u0432\u0430\u044f \u0443\u0442\u0435\u0447\u043a\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 favicon<\/a><br \/>  \u2022 <a href=\"https:\/\/3dnews.ru\/1033119\" rel=\"nofollow noopener noreferrer\">\u0412 Brave \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u0431\u0430\u0433, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 onion-\u0441\u0430\u0439\u0442\u043e\u0432 \u0432 \u0442\u0440\u0430\u0444\u0438\u043a\u0435 DNS<\/a><br \/>  \u2022 <a href=\"https:\/\/3dnews.ru\/1033151\" rel=\"nofollow noopener noreferrer\">\u0421\u043a\u043e\u0440\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440 Chrome \u0434\u043b\u044f Windows \u0438 Android \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438<\/a><br \/>  \u2022 <a href=\"https:\/\/tproger.ru\/news\/microsoft-edge-zhdjot-obnovlenie-pojavjatsja-vidzhety-poisk-po-vkladkam-i-menju-rasshirenij\/\" rel=\"nofollow noopener noreferrer\">Microsoft Edge \u0436\u0434\u0451\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435: \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u044b, \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0430\u043c \u0438 \u043c\u0435\u043d\u044e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439<\/a><\/p>\n<p>  <\/p>\n<h3><font color=\"#349A48\"><a name=\"interesting\"><\/a>\u0417\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435<\/font><\/h3>\n<p>  \u2022 <a href=\"https:\/\/oddstyle.ru\/wordpress-2\/novosti-wordpress\/dolya-wordpress-perevalila-za-40-sredi-top-10-mln-sajtov-v-rejtinge-alexa.html\" rel=\"nofollow noopener noreferrer\">\u0414\u043e\u043b\u044f WordPress \u043f\u0435\u0440\u0435\u0432\u0430\u043b\u0438\u043b\u0430 \u0437\u0430 40% \u0441\u0440\u0435\u0434\u0438 \u0442\u043e\u043f 10 \u043c\u043b\u043d \u0441\u0430\u0439\u0442\u043e\u0432 \u0432 \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0435 Alexa<\/a><br \/>  \u2022 <a href=\"https:\/\/tproger.ru\/news\/github-sozdal-servis-dlja-3d-vizualizacii-akkauntov-polzovatelej\/\" rel=\"nofollow noopener noreferrer\">GitHub \u0441\u043e\u0437\u0434\u0430\u043b \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f 3D-\u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/a><br \/>  \u2022 <a href=\"https:\/\/vc.ru\/hr\/209527-v-kitae-vse-chashche-menyayut-menedzherov-na-algoritmy-te-sledyat-za-rabotnikami-dayut-im-zadachi-i-mogut-spisat-chast-zarplaty\" rel=\"nofollow noopener noreferrer\">\u0412 \u041a\u0438\u0442\u0430\u0435 \u0432\u0441\u0435 \u0447\u0430\u0449\u0435 \u043c\u0435\u043d\u044f\u044e\u0442 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432 \u043d\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b: \u0442\u0435 \u0441\u043b\u0435\u0434\u044f\u0442 \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u043d\u0438\u043a\u0430\u043c\u0438, \u0434\u0430\u044e\u0442 \u0438\u043c \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043f\u0438\u0441\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u0440\u043f\u043b\u0430\u0442\u044b <\/a><br \/>  \u2022 <a href=\"https:\/\/3dnews.ru\/1032849\" rel=\"nofollow noopener noreferrer\">Microsoft \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 Flash Player \u0438\u0437 Windows 10<\/a><br \/>  \u2022 <a href=\"https:\/\/tproger.ru\/articles\/tunnelnyj-sindrom-blizorukost-vygoranie-chem-bolejut-ajtishniki\/\" rel=\"nofollow noopener noreferrer\">\u0422\u0443\u043d\u043d\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043d\u0434\u0440\u043e\u043c, \u0431\u043b\u0438\u0437\u043e\u0440\u0443\u043a\u043e\u0441\u0442\u044c, \u0432\u044b\u0433\u043e\u0440\u0430\u043d\u0438\u0435: \u0447\u0435\u043c \u0431\u043e\u043b\u0435\u044e\u0442 \u0430\u0439\u0442\u0438\u0448\u043d\u0438\u043a\u0438<\/a><\/p>\n<p>  <a href=\"https:\/\/habr.com\/ru\/post\/542380\/\">\u0414\u0430\u0439\u0434\u0436\u0435\u0441\u0442 \u0437\u0430 \u043f\u0440\u043e\u0448\u043b\u0443\u044e \u043d\u0435\u0434\u0435\u043b\u044e<\/a>.<br \/>  \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 <a href=\"http:\/\/habrahabr.ru\/users\/dersmoll\/\" rel=\"nofollow noopener noreferrer\">dersmoll<\/a> \u0438 <a href=\"http:\/\/habrahabr.ru\/users\/alekskorovin\/\" rel=\"nofollow noopener noreferrer\">alekskorovin<\/a>.<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/543586\/\"> https:\/\/habr.com\/ru\/post\/543586\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0443 \u0441 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0438 \u043e\u043a\u043e\u043b\u043e \u043d\u0435\u0433\u043e.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/2w\/kg\/_q\/2wkg_q2pnorjf4_mtihzfacvdso.jpeg\"><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-318389","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/318389","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=318389"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/318389\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=318389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=318389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=318389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}