{"id":327764,"date":"2022-01-10T09:01:37","date_gmt":"2022-01-10T09:01:37","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=327764"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=327764","title":{"rendered":"<span>\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 \u2116498 (13 \u2014 19 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2021)<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\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\/r\/w780q1\/webt\/-x\/ip\/ke\/-xipkexl29jffupzpvtl7drnaoe.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/-x\/ip\/ke\/-xipkexl29jffupzpvtl7drnaoe.jpeg\" data-blurred=\"true\"\/><\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p><a href=\"#media\"><b>\u041c\u0435\u0434\u0438\u0430<\/b><\/a>\u00a0\u00a0\u00a0\u00a0|\u00a0\u00a0\u00a0\u00a0<a href=\"#development\"><b>\u0412\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/b><\/a>\u00a0\u00a0\u00a0\u00a0|\u00a0\u00a0\u00a0\u00a0<a href=\"#css\"><b>CSS<\/b><\/a>\u00a0\u00a0\u00a0\u00a0|\u00a0\u00a0\u00a0\u00a0<a href=\"#js\"><b>JavaScript<\/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=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/web\/259\/2f4\/069\/2592f40697cc49dc939e9fc3983fc737.png\"\/> <a href=\"https:\/\/soundcloud.com\/begebot\/ep65\" 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 \u211665 \u2014 \u0410 \u0440\u0430\u0431\u043e\u0442\u043e\u0434\u0430\u0442\u0435\u043b\u044c \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0442\u044b \u044d\u0442\u0443 \u0448\u0443\u0442\u043a\u0443 \u043d\u0435 \u0441\u043b\u044b\u0448\u0430\u043b?<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"podcast\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/web\/259\/2f4\/069\/2592f40697cc49dc939e9fc3983fc737.png\"\/> <a href=\"https:\/\/soundcloud.com\/proconf\/116-devopsjs-2021\" rel=\"nofollow noopener noreferrer\">\u041f\u043e\u0434\u043a\u0430\u0441\u0442 \u00abproConf\u00bb #116: DevOps.js 2021<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"podcast\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/web\/259\/2f4\/069\/2592f40697cc49dc939e9fc3983fc737.png\"\/> <a href=\"https:\/\/podcast.ru\/1233996390\" rel=\"nofollow noopener noreferrer\">Frontend Weekend \u2116115, \u0432 \u0433\u043e\u0441\u0442\u044f\u0445 \u0418\u043b\u044c\u044f \u041d\u0435\u043c\u0438\u0440\u043e \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Toptal: \u043e \u043f\u043e\u0438\u0441\u043a\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0438 \u0440\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u0438<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"podcast\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/web\/259\/2f4\/069\/2592f40697cc49dc939e9fc3983fc737.png\"\/> <a href=\"https:\/\/soundcloud.com\/web-standards\/episode-312\" 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 312. Firefox \u0438 Safari, Web Neural Network API, Turborepo, GitPod, \u0432\u0448\u0438\u0442\u044b\u0435 node_modules \u0438 \u0414\u0435\u043f\u043b\u043e\u0439\u043c\u0438<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"podcast\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/web\/259\/2f4\/069\/2592f40697cc49dc939e9fc3983fc737.png\"\/> <a href=\"https:\/\/soundcloud.com\/csssr\/reactconf-2021-optimizatsii-koda-ruby-on-rails-7-rc-dart-215-flutter-28-tailwind-css-30\" rel=\"nofollow noopener noreferrer\">\u00ab\u041d\u043e\u0432\u043e\u0441\u0442\u0438 512\u00bb \u043e\u0442 CSSSR: ReactConf 2021, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430, Ruby on Rails 7 RC, Dart 2.15, Flutter 2.8, Tailwind CSS 3.0<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"podcast\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/web\/259\/2f4\/069\/2592f40697cc49dc939e9fc3983fc737.png\"\/> <img decoding=\"async\" alt=\"video\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=T40G7h0exZE\" rel=\"nofollow noopener noreferrer\">\u041f\u043e\u0434\u043a\u0430\u0441\u0442 \u00ab\u0414\u0430 \u043a\u0430\u043a \u0442\u0430\u043a-\u0442\u043e?\u00bb. \u0412\u044b\u043f\u0443\u0441\u043a \u211614. \u041a\u0430\u043a \u0434\u0436\u0443\u043d\u0443 \u0432\u044b\u0440\u0430\u0441\u0442\u0438 \u0432 \u043c\u0438\u0434\u043b\u0430<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"video\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"\/> <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/vimeo.com\/showcase\/9087993\" rel=\"nofollow noopener noreferrer\">Smashing Meets For All \u2014 December 2021. \u0422\u0440\u0438 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430 \u0442\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438<\/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=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/blog.logrocket.com\/whats-new-latest-graphql-spec\/\" rel=\"nofollow noopener noreferrer\">\u0427\u0442\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 GraphQL<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/css-tricks.com\/working-with-web-feeds-its-more-than-rss\/\" rel=\"nofollow noopener noreferrer\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0432\u0435\u0431-\u0444\u0438\u0434\u0430\u043c\u0438: \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c RSS<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/12daysofweb.dev\/2021\/audio-api\/\" rel=\"nofollow noopener noreferrer\">Audio API: \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c audio \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0435\u0433\u043e API \u043f\u0443\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0433\u043e \u0430\u0443\u0434\u0438\u043e\u043f\u043b\u0435\u0435\u0440\u0430.<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/www.bram.us\/2021\/12\/17\/how-to-prevent-scrolling-the-page-on-ios-safari-15\/\" rel=\"nofollow noopener noreferrer\">\u041a\u0430\u043a \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 iOS Safari 15<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/www.simeongriggs.dev\/there-has-never-been-a-better-time-to-build-websites\" rel=\"nofollow noopener noreferrer\">\u0421\u0435\u0439\u0447\u0430\u0441 \u043b\u0443\u0447\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432<\/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=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/developer.chrome.com\/blog\/full-accessibility-tree\/\" rel=\"nofollow noopener noreferrer\">\u041f\u043e\u043b\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0432 Chrome DevTools<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/nodesource.com\/blog\/whats-new-in-npm-8\" rel=\"nofollow noopener noreferrer\">\u0427\u0442\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0432 npm 8?<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/danielyefet.medium.com\/the-ultimate-front-end-toolkit-for-2022-302f4e535679\" rel=\"nofollow noopener noreferrer\">Ultimate Front-End Toolkit \u043d\u0430 2022 \u0433\u043e\u0434<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/www.bram.us\/2021\/12\/18\/broken-hyphens-in-chromium-96-an-explanation-and-fix\/\" rel=\"nofollow noopener noreferrer\">\u0421\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0435 \u0434\u0435\u0444\u0438\u0441\u044b \u0432 Chromium 96: \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 (\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\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=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage2\/c57\/b92\/af4\/c57b92af4ee0d37f787c211a068b1b95.png\"\/> <a href=\"https:\/\/habr.com\/ru\/company\/miro\/blog\/595307\/\">\u041a\u0430\u043a \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0430\u043d\u0434\u043b\u0430 SPA \u0438 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/calendar.perfplanet.com\/2021\/eli5-web-performance-optimization\/\" rel=\"nofollow noopener noreferrer\">\u041e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u0435, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043c\u043d\u0435 \u043f\u044f\u0442\u044c \u043b\u0435\u0442: \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0435\u0431-\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/nolanlawson.com\/2021\/12\/17\/introducing-fuite-a-tool-for-finding-memory-leaks-in-web-apps\/\" rel=\"nofollow noopener noreferrer\">\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c fuite: \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0443\u0442\u0435\u0447\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/calendar.perfplanet.com\/2021\/performance-implications-of-javascript-errors\/\" rel=\"nofollow noopener noreferrer\">\u0412\u043b\u0438\u044f\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 JavaScript \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/jagjeets.medium.com\/web-performance-understanding-critical-rendering-path-72283caefc1f\" rel=\"nofollow noopener noreferrer\">\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 | Critical Rendering Path<\/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=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/tympanus.net\/codrops\/2021\/12\/14\/inspirational-websites-roundup-32\/\" rel=\"nofollow noopener noreferrer\">\u041f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u043a\u0440\u0435\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 \u00abInspirational Websites Roundup #32\u00bb<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/tympanus.net\/codrops\/2021\/12\/13\/pixelated-distortion-effect-with-three-js\/\" rel=\"nofollow noopener noreferrer\">\u042d\u0444\u0444\u0435\u043a\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Three.js<\/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=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/2021.stateofcss.com\/ru-RU\/\" rel=\"nofollow noopener noreferrer\">\u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u043f\u0440\u043e\u0441\u0430 \u00abThe State of CSS 2021\u00bb<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/betterprogramming.pub\/whats-new-in-tailwind-css-3-f46c47262da\" rel=\"nofollow noopener noreferrer\">\u0427\u0442\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0432 Tailwind CSS 3?<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/12daysofweb.dev\/2021\/css-custom-properties\/\" rel=\"nofollow noopener noreferrer\">CSS Custom Properties<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/12daysofweb.dev\/2021\/houdini\/\" rel=\"nofollow noopener noreferrer\">CSS Houdini Paint API<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/css-tricks.com\/consistent-fluidly-scaling-type-and-spacing\/\" rel=\"nofollow noopener noreferrer\">\u041a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u0430\u044f, \u043f\u043b\u0430\u0432\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0438 \u043e\u0442\u0441\u0442\u0443\u043f\u044b<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/javascript.plainenglish.io\/tailwind-css-a-recap-after-two-and-a-half-projects-303ef846f26e\" rel=\"nofollow noopener noreferrer\">Tailwind CSS \u2014 \u0440\u0435\u0437\u044e\u043c\u0435 \u043f\u043e\u0441\u043b\u0435 \u0434\u0432\u0443\u0445 \u0441 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/blog.fontawesome.com\/svg-or-webfont\/\" rel=\"nofollow noopener noreferrer\">[Checklist] \u041a\u0430\u043a \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 SVG \u0438 Webfont<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/blog.logrocket.com\/responsive-css-border-radius-fab-four-technique\/\" rel=\"nofollow noopener noreferrer\">\u0410\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 CSS border radius \u0441 \u0442\u0435\u0445\u043d\u0438\u043a\u043e\u0439 Fab Four<\/a><\/p>\n<h3><font color=\"#349A48\"> <a name=\"js\"><\/a> JavaScript<\/font><\/h3>\n<p>  \u2022 <img decoding=\"async\" alt=\"habr\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage2\/c57\/b92\/af4\/c57b92af4ee0d37f787c211a068b1b95.png\"\/> <a href=\"https:\/\/habr.com\/ru\/post\/595975\/\">\u0418\u0437\u0438-\u043f\u0438\u0437\u0438 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u044b \u043d\u0430 JavaScript<\/a><br \/>  \u2022 <a href=\"https:\/\/nuancesprog.ru\/p\/14711\/\" rel=\"nofollow noopener noreferrer\">\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u043f\u0440\u043e\u043c\u0438\u0441\u0430\u043c\u0438 JavaScript<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"video\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=2Od3MV1-mpk\" rel=\"nofollow noopener noreferrer\">\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u0432 \u2014 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441 JS \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f | \u0420\u0435\u0448\u0430\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 LeetCode<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/web.dev\/structured-clone\/\" rel=\"nofollow noopener noreferrer\">\u0413\u043b\u0443\u0431\u043e\u043a\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 JavaScript \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c structuredClone<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/javascript.plainenglish.io\/6-hidden-javascript-gems-you-probably-missed-but-will-make-you-a-shining-star-at-work-b57a3bcf8015\" rel=\"nofollow noopener noreferrer\">6 \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u0436\u0435\u043c\u0447\u0443\u0436\u0438\u043d JavaScript, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/blog.logrocket.com\/understanding-axios-post-requests\/\" rel=\"nofollow noopener noreferrer\">\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 POST \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Axios <\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/cards.jordanscales.com\/toposort\" rel=\"nofollow noopener noreferrer\">\u0422\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430<\/a><\/p>\n<ul>\n<li><strong>React<\/strong><br \/>  \u2022 <img decoding=\"async\" alt=\"habr\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage2\/c57\/b92\/af4\/c57b92af4ee0d37f787c211a068b1b95.png\"\/> <a href=\"https:\/\/habr.com\/ru\/post\/596237\/\">\u041f\u0435\u0440\u0435\u0434\u0430\u0435\u043c React \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u043e WebSocket<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"video\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"\/> <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/www.bram.us\/2021\/12\/16\/react-conf-2021\/\" rel=\"nofollow noopener noreferrer\">React Conf 2021<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/reactjs.org\/blog\/2021\/12\/17\/react-conf-2021-recap.html\" rel=\"nofollow noopener noreferrer\">\u0418\u0442\u043e\u0433\u0438 React Conf 2021 <\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/www.useanvil.com\/blog\/engineering\/improve-optimize-react-render-performance-part-1\/\" rel=\"nofollow noopener noreferrer\">\u041c\u0435\u0442\u043e\u0434\u044b \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 React: \u0447\u0430\u0441\u0442\u044c 1<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/blog.openreplay.com\/redux-who-handle-your-own-state-instead\" rel=\"nofollow noopener noreferrer\">Redux Who? \u041b\u0443\u0447\u0448\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/javascript.plainenglish.io\/set-up-web3-in-your-react-app-dec6d6f45b4d\" rel=\"nofollow noopener noreferrer\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 Web3 \u0432 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 React<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/blog.logrocket.com\/create-advanced-scroll-lock-react-hook\/\" rel=\"nofollow noopener noreferrer\">\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 React \u0445\u0443\u043a \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 <\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/blog.logrocket.com\/remix-guide-newly-open-sourced-react-framework\/\" rel=\"nofollow noopener noreferrer\">Remix: \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043d\u043e\u0432\u043e\u043c\u0443 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0443 React<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/blog.logrocket.com\/using-fetch-event-source-server-sent-events-react\/\" rel=\"nofollow noopener noreferrer\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Fetch Event Source \u0434\u043b\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0432 React<\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li><strong>Vue<\/strong><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/www.sitepoint.com\/nuxt-3-whats-new-get-started\/\" rel=\"nofollow noopener noreferrer\">Nuxt 3 Beta: \u0447\u0442\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0438 \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/medium.com\/js-dojo\/how-to-build-a-vue-based-micro-frontends-infrastructure-5a7729d5ed9\" rel=\"nofollow noopener noreferrer\">\u041a\u0430\u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u0438\u043a\u0440\u043e-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Vue<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/blog.logrocket.com\/building-app-electron-vue\/\" rel=\"nofollow noopener noreferrer\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Electron \u0438 Vue<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/blog.logrocket.com\/getting-element-component-vue-queryselector\/\" rel=\"nofollow noopener noreferrer\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Vue querySelector<\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li><strong>Angular<\/strong><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/dkreider.medium.com\/angular-async-pipe-heres-how-to-use-it-like-a-boss-f304bf7409bd\" rel=\"nofollow noopener noreferrer\">Angular Async Pipe \u2014 \u0432\u043e\u0442 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li><strong>Svelte<\/strong><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/www.twilio.com\/blog\/all-you-need-to-know-svelte\" rel=\"nofollow noopener noreferrer\">\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u043f\u043e Svelte \u2014 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432 \u0434\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"video\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"\/> <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=uQntFkK8Z54\" rel=\"nofollow noopener noreferrer\">\u0411\u0443\u0434\u0443\u0449\u0435\u0435 Svelte (\u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0441 \u0420\u0438\u0447\u0435\u043c \u0425\u0430\u0440\u0440\u0438\u0441\u043e\u043c)<\/a>  <\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li><strong>Libs &amp; Plugins<\/strong><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/greensock.com\/3-9\" rel=\"nofollow noopener noreferrer\">\u0420\u0435\u043b\u0438\u0437 GSAP 3.9: Flip Plugin \u0441\u0442\u0430\u043b \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/floating-ui.com\/\" rel=\"nofollow noopener noreferrer\">Floating UI \u2014 \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0438\u043c\u0438 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430\u043c\u0438, \u043e\u043a\u043d\u0430\u043c\u0438, \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438, \u043c\u0435\u043d\u044e \u0438 \u043c\u043d\u043e\u0433\u0438\u043c \u0434\u0440\u0443\u0433\u0438\u043c<\/a><br \/>  \u2022 <img decoding=\"async\" alt=\"en\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/storage3\/2e2\/522\/737\/2e2522737ec404a9f76047e108dfaea0.gif\"\/> <a href=\"https:\/\/quick-lint-js.com\/blog\/version-1.0\/\" rel=\"nofollow noopener noreferrer\">quick-lint-js \u2014 \u0411\u044b\u0441\u0442\u0440\u0435\u0435, \u043f\u0440\u043e\u0449\u0435, \u0434\u0440\u0443\u0436\u0435\u043b\u044e\u0431\u043d\u0435\u0435: \u043a\u0430\u043a quick-lint-js \u043f\u0440\u0435\u0432\u0437\u043e\u0439\u0434\u0435\u0442 ESLint<\/a>  <\/li>\n<\/ul>\n<p>  <a href=\"https:\/\/habr.com\/ru\/post\/595073\/\">\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=\"https:\/\/habr.com\/ru\/users\/dersmoll\/\">dersmoll<\/a> \u0438 <a href=\"https:\/\/habr.com\/ru\/users\/alekskorovin\/\">alekskorovin<\/a>.<\/div>\n<\/div>\n<p> <!----> <!----><br \/> \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\/596593\/\"> https:\/\/habr.com\/ru\/post\/596593\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\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\/r\/w780q1\/webt\/-x\/ip\/ke\/-xipkexl29jffupzpvtl7drnaoe.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/-x\/ip\/ke\/-xipkexl29jffupzpvtl7drnaoe.jpeg\" data-blurred=\"true\"\/><\/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-327764","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327764","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=327764"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327764\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=327764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=327764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=327764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}