{"id":15055,"date":"2023-03-10T14:45:40","date_gmt":"2023-03-10T13:45:40","guid":{"rendered":"https:\/\/vived.io\/?p=15055"},"modified":"2023-03-10T14:48:38","modified_gmt":"2023-03-10T13:48:38","slug":"co-w-chrome-piszczy-frontend-weekly-vol-128","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/","title":{"rendered":"Co w Chrome piszczy | Frontend Weekly vol. 128"},"content":{"rendered":"\n<h2 id=\"1-co-w-chrome-piszczy\" data-num=1>1. Co w Chrome piszczy<\/h2>\n\n\n\n<p>W zesz\u0142ym tygodniu sporo uwagi po\u015bwi\u0119cili\u015bmy przegl\u0105darce od Apple, dlatego w tym tygodniu przyjrzymy si\u0119 troch\u0119 co w trawie piszczy po drugiej stronie balustrady. Co prawda nowo\u015bci w Chrome to eksperymentalne funkcjonalno\u015bci, niemniej jednak,  jest si\u0119 czym ekscytowa\u0107. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tooltipy na jakie wszyscy zas\u0142ugujemy<\/h3>\n\n\n\n<p>Od lat tworzenie atrakcyjnych tooltip\u00f3w by\u0142o udr\u0119k\u0105 dla Fontend Developer\u00f3w. Teoretycznie jeste\u015bmy w stanie stowrzy\u0107 Tooltip przy u\u017cyciu samych CSS&#8217;\u00f3w. W praktyce szybko okazuje si\u0119, \u017ce w ten spos\u00f3b nie jeste\u015bmy w stanie zaimplementowa\u0107 opytmalnego pozycjonowania. Dobrze zaprogramowany Tooltop zawsze zmie\u015bci si\u0119 na ekranie i zawsze zachowuje odpowiednie proporcje wzgl\u0119dem elemntu do kt\u00f3rego jest zaczepiony. Niestety, bez JavaScriptu i skomplikowanych bibliotek ani rusz.<\/p>\n\n\n\n<p>W najnowszym Chrome za eksperymentaln\u0105 flag\u0105 dodana zosta\u0142a funkcja <code>anchor<\/code>, kt\u00f3ra zmienia zasady gry. Dzi\u0119ki niej mo\u017cemy dowolnie pozycjonowa\u0107 nasze Tooltipy w CSS&#8217;ach, a skomplikowan\u0105 logik\u0105 pozycjonowania zajmie si\u0119 Chrome. Funkcja <code>anchor<\/code> przyjmuje trzy argumenty (ID kotwicy, stron\u0119 (top\/bottom\/left\/righ), domy\u015bln\u0105 warto\u015b\u0107) i zwraca relatywn\u0105 wsp\u00f3\u0142rz\u0119dn\u0105 wzgl\u0119dem kotwicy. Opr\u00f3cz samej funkcji <code>anchor<\/code> w nasze r\u0119ce trafia te\u017c propery <code>anchor-scroll<\/code>, kt\u00f3re umo\u017cliwi nam reagowanie na scroll przegl\u0105darki i funkcja <code>anchor-size<\/code>, kt\u00f3re pozwoli pozyjnonowa\u0107 Tooltip w zale\u017cno\u015bci od wielko\u015bci elementu do kt\u00f3rego zaczepiamy Tooltip. <\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-css\">.anchor {\n  anchor-name: --my-anchor;\n}\n\n.tooltip {\n  bottom: anchor(--my-anchor top);\n  left: calc(anchor(--my-anchor center) - (var(--boat-size) * 0.5));\n   width: calc(4 * anchor-size(--my-anchor width));\n}<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/developer.chrome.com\/blog\/tether-elements-to-each-other-with-css-anchor-positioning\/#using-anchor-positioning\" target=\"_blank\" rel=\"noreferrer noopener\">Tether elements to each other with CSS anchor positioning<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Nag\u0142\u00f3wki na jakie wszyscy zas\u0142ugujemy<\/h3>\n\n\n\n<p>Kolejn\u0105 eksperymentaln\u0105 funkcjonalno\u015bci\u0105 w najnowszym Chrome jest property <code>text-wrap:balance<\/code>, kt\u00f3ra pozwala nam zbalansowa\u0107 d\u0142ugo\u015b\u0107 linii w danym tek\u015bcie. Co wa\u017cne, tekst nie mo\u017ce przekracza\u0107 4 linijek, dlatego nowe property nada sie tylko do stylowania nag\u0142\u00f3wk\u00f3w i kt\u00f3tkich opis\u00f3w pod zdj\u0119ciami czy snippetami kodu.<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-css\">h1, h2, h3, h4, h5, h6, caption, figcaption {\n    text-wrap: balance;\n}<\/code><\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Screenshot-2023-03-10-at-11.11.35-1024x835.png\" alt=\"\" class=\"wp-image-15049\" width=\"715\" height=\"583\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Screenshot-2023-03-10-at-11.11.35-1024x835.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Screenshot-2023-03-10-at-11.11.35-300x245.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Screenshot-2023-03-10-at-11.11.35-768x627.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Screenshot-2023-03-10-at-11.11.35.png 1466w\" sizes=\"auto, (max-width: 715px) 100vw, 715px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/clagnut.com\/blog\/2424\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Balance your headers and captions with new balance property<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Headless Chrome na jaki wszyscy zas\u0142ugujemy<\/h3>\n\n\n\n<p>Czy wiecie, \u017ce headless Chrome, kt\u00f3rego u\u017cywacie w testach E2E, tak naprawd\u0119 ma niewiele wsp\u00f3lnego z Chrome, kt\u00f3ry zainstalowany jest na waszych komputerach? Okazuje si\u0119, \u017ce Chrome Headless jest osobn\u0105 przegl\u0105dark\u0105 rozwijan\u0105 przez zesp\u00f3\u0142. A\u017c ci\u0119\u017cko w to uwierzy\u0107, patrz\u0105c na poziom feature parity jaki uda\u0142o si\u0119 osi\u0105gn\u0105\u0107. Bior\u0105c pod uwag\u0119 wysi\u0142ek jaki musia\u0142 zosta\u0107 w\u0142o\u017cony w utrzymanie drugiej przegl\u0105dark, nie dziwi decyzja, \u017ceby po\u0142\u0105czy\u0107 obie wersje Chrome.<\/p>\n\n\n\n<p>Do najnowszego Chrome trafi\u0142a flaga, <code>--headless=new<\/code>, kt\u00f3ra uruchamia now\u0105 zunifikowana przegl\u0105dark\u0119 w trybie headless. Chrome nadal rozwija\u0142 b\u0119dzie star\u0105 alternatywn\u0105 wersj\u0119 przegl\u0105darki (ze wzgl\u0119du na kompatyblino\u015b\u0107 wsteczn\u0105, to ona b\u0119dzie si\u0119 uruchami\u0107 z flg\u0105 <code>--headless<\/code>), ale zesp\u00f3l liczy na to, \u017ce z czasem uda si\u0119 j\u0105 jako\u015b wygasi\u0107.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/developer.chrome.com\/articles\/new-headless\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Chrome\u2019s Headless mode gets an upgrade<\/a><\/p>\n\n\n\n<h2 id=\"2-porownanie-frameworkow-do-server-side-renderigu\" data-num=2>2. Por\u00f3wnanie framework\u00f3w do Server Side Renderigu<\/h2>\n\n\n\n<p>Raporty i podsumowania, to to co lubimy w Vived najbardziej. W minioym tygodniu ukaza\u0142y si\u0119 dwa bardzo ciekawe zestawienia por\u00f3wnuj\u0105ce frameworki do renderowania po stronie serwera. <\/p>\n\n\n\n<p>Pierwsze z nich zosta\u0142o przygotowane przez zesp\u00f3\u0142 Astro i bazuje na rzeczywistych danych u\u017cytkownik\u00f3w zebranych przez Chrome. <strong>TLDR;<\/strong> We wszystkich analizowanych kategoriach wygrywa Astro, SvelteKit i Remix, zostawiaj\u0105c w tyle Next.js, Nuxt czy WordPress. Na wyniki nale\u017cy jednak patrze\u0107 troch\u0119 przez palce. Po pierwsze, frameworki, kt\u00f3re zosta\u0142y z ty\u0142u maj\u0105 ju\u017c swoje lata i sporo z nich to od dawna nie utrzymywane projekty. Po drugie, wysuwaj\u0105ce si\u0119 na czo\u0142o frameworki stoj\u0105 za ma\u0142ym procentem stron w internecie i u\u017cywane s\u0105 g\u0142\u00f3wnie przez technologicznych pasjonat\u00f3w.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/astro.build\/blog\/2023-web-framework-performance-report\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">2023 Web Framework Performance Report<\/a><\/p>\n\n\n\n<p>Drugi raport przygotowany zosta\u0142 przez tw\u00f3rc\u0119 Eleventy i skupia si\u0119 na przeprowadzonych lokalnie testach. Pod uwag\u0119 wzi\u0119ty zosta\u0142 czas budowania aplikacji, rozmiar paczki wysy\u0142anej do klienta czy ilo\u015b\u0107 zewn\u0119trznych dependencji. <strong>TLDR;<\/strong> W wi\u0119kszo\u015bci analizowanych kategorii na czo\u0142o ponownie wysuwa si\u0119 Eleventy, Astro i SvelteKit. Tym razem pozosta\u0142e frameworki nie pozostaj\u0105 jednak daleko w tyle i w zale\u017cno\u015bci od kategorii w pierwszej tr\u00f3jce przewija si\u0119 chocia\u017cby Next.js czy ma\u0142o znany Enhance.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/www.zachleat.com\/web\/site-generator-review\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">The javascript site generator review, 2023<\/a><\/p>\n\n\n\n<h2 id=\"3-o-co-chodzi-z-tymi-react-server-components\" data-num=3>3. O co chodzi z tymi React Server Components?<\/h2>\n\n\n\n<p>O React Server Components sporo si\u0119 m\u00f3wi, ale tak naprawd\u0119 ci\u0119\u017cko znale\u017a\u0107 zwi\u0119z\u0142e i dobre wyt\u0142umaczenie tej koncepcji. Na ratunek jak zwykle przychodzi Josh W Comeau, kt\u00f3rego mo\u017cecie kojarzy\u0107 z \u015bwietnych publikacji na temat Reacta. Co prawda tym razem nie mamy do czynienia z blogpostem, a z Twitterowym w\u0105tkiem dotycz\u0105cym po\u0142\u0105czenia Styled Components z React Server Components, ale jest to najlepsze przedstawienie tematu jakie do tej pory widzia\u0142em.<\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\"><p lang=\"en\" dir=\"ltr\">\ud83c\udf20 One of the hot new features in Next 13 is the integration of React Server Components (RSC). I&#39;ve seen a lot of confusion about how this feature interacts with \ud83d\udc85 styled-components, and other CSS-in-JS tools.<br><br>I wanna share what I&#39;ve learned.<\/p>&mdash; Josh W. Comeau (@JoshWComeau) <a href=\"https:\/\/twitter.com\/JoshWComeau\/status\/1631398854632304641?ref_src=twsrc%5Etfw\">March 2, 2023<\/a><\/blockquote><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script>\n<\/div><\/figure>\n\n\n\n<h2 id=\"4-civet\" data-num=4>4. Civet<\/h2>\n\n\n\n<p>Na zako\u0144czenie dzisiejszego przegl\u0105du ma\u0142a ciekawostka dla wszystkich znudzonych tempem rozwoju TypeScript. Civiet to nowy j\u0119zyk kompilowany do JavaScript i TypeScript, kt\u00f3ry oferuje implementacj\u0119 wielu funkcjonalno\u015bci, kt\u00f3re od d\u0142u\u017cszego czasu tkwi\u0105 w TC39 Pipeline (np. <a href=\"https:\/\/github.com\/tc39\/proposal-pattern-matching\" target=\"_blank\" rel=\"noreferrer noopener\">Pattern Matching<\/a>, <a href=\"https:\/\/github.com\/tc39\/proposal-pipeline-operator\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Pipe Operator<\/a>). Czy TypeScript ma si\u0119 czego obawai\u0107? Raczej nie. Czy Civet szturmem zawojuje serca deweloper\u00f3w? Raczej nie. Czy Civet wygl\u0105da interesuj\u0105co? Zdecydowanie tak!<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-typescript\">\/\/ Pattern Matching\nswitch x\n  0\n    console.log(&quot;zero&quot;)\n  \/^\\s+$\/\n    console.log(&quot;whitespace&quot;)\n  [{type: &quot;text&quot;, content}, ...rest]\n    console.log(&quot;leading text&quot;, content)<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-typescript\">\/\/ Single-Argument Function Shorthand\nx.map .name\nx.map &amp;.profile?.name[0...3]\nx.map &amp;.callback a, b\nx.map &amp;+1\nx.map -&amp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-typescript\">\/\/ Pipelines\ndata\n  |&gt; Object.keys\n  |&gt; console.log<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/civet.dev\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Civer &#8211; The Modern Way to Write TypeScript<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Miniony tydzie\u0144 zdominowany by\u0142 przez nowo\u015bci jakie trafi\u0142y w\u0142a\u015bnie do Chrome. Wi\u0119kszo\u015b\u0107 z nich to na razie eksperymenty, ale trzymamy kciuki, \u017ceby jak najszybciej trafi\u0142y do standardu. Poza tym mamy dla Was kilka raport\u00f3w na temat renderowania po stronie serwera i pezentacj\u0119 przysz\u0142ego zab\u00f3jcy TypeScript*.<\/p>\n","protected":false},"author":12,"featured_media":15059,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[273],"tags":[],"class_list":["post-15055","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-frontend-pl"],"acf":{"feature_image_visible":false,"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-1.png","feature_image_blog":{"ID":15061,"id":15061,"title":"pexels-matthias-cooper-580900 (1)","filename":"pexels-matthias-cooper-580900-1.jpg","filesize":163460,"url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/pexels-matthias-cooper-580900-1.jpg","link":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/pexels-matthias-cooper-580900-1-2\/","alt":"","author":"12","description":"","caption":"","name":"pexels-matthias-cooper-580900-1-2","status":"inherit","uploaded_to":15055,"date":"2023-03-10 12:25:43","modified":"2023-03-10 12:25:43","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/vived.io\/wp-includes\/images\/media\/default.png","width":1280,"height":853,"sizes":{"thumbnail":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/pexels-matthias-cooper-580900-1-150x150.jpg","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/pexels-matthias-cooper-580900-1-300x200.jpg","medium-width":300,"medium-height":200,"medium_large":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/pexels-matthias-cooper-580900-1-768x512.jpg","medium_large-width":768,"medium_large-height":512,"large":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/pexels-matthias-cooper-580900-1-1024x682.jpg","large-width":1024,"large-height":682,"1536x1536":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/pexels-matthias-cooper-580900-1.jpg","1536x1536-width":1280,"1536x1536-height":853,"2048x2048":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/pexels-matthias-cooper-580900-1.jpg","2048x2048-width":1280,"2048x2048-height":853,"gform-image-choice-sm":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/pexels-matthias-cooper-580900-1.jpg","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":200,"gform-image-choice-md":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/pexels-matthias-cooper-580900-1.jpg","gform-image-choice-md-width":400,"gform-image-choice-md-height":267,"gform-image-choice-lg":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/pexels-matthias-cooper-580900-1.jpg","gform-image-choice-lg-width":600,"gform-image-choice-lg-height":400}},"estimated_reading_time":"4"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Co w Chrome piszczy | Frontend Weekly vol. 128 - Vived<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Co w Chrome piszczy | Frontend Weekly vol. 128 - Vived\" \/>\n<meta property=\"og:description\" content=\"Miniony tydzie\u0144 zdominowany by\u0142 przez nowo\u015bci jakie trafi\u0142y w\u0142a\u015bnie do Chrome. Wi\u0119kszo\u015b\u0107 z nich to na razie eksperymenty, ale trzymamy kciuki, \u017ceby jak najszybciej trafi\u0142y do standardu. Poza tym mamy dla Was kilka raport\u00f3w na temat renderowania po stronie serwera i pezentacj\u0119 przysz\u0142ego zab\u00f3jcy TypeScript*.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-10T13:45:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-10T13:48:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tomasz Borowicz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/\"},\"author\":{\"name\":\"Tomasz Borowicz\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb\"},\"headline\":\"Co w Chrome piszczy | Frontend Weekly vol. 128\",\"datePublished\":\"2023-03-10T13:45:40+00:00\",\"dateModified\":\"2023-03-10T13:48:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/\"},\"wordCount\":867,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-1.png\",\"articleSection\":[\"Frontend\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/\",\"url\":\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/\",\"name\":\"Co w Chrome piszczy | Frontend Weekly vol. 128 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-1.png\",\"datePublished\":\"2023-03-10T13:45:40+00:00\",\"dateModified\":\"2023-03-10T13:48:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-1.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-1.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Co w Chrome piszczy | Frontend Weekly vol. 128\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vived.io\/pl\/#website\",\"url\":\"https:\/\/vived.io\/pl\/\",\"name\":\"Vived\",\"description\":\"platform empowering IT people and technology companies to synergic growth\",\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vived.io\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vived.io\/pl\/#organization\",\"name\":\"Vived\",\"url\":\"https:\/\/vived.io\/pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"width\":136,\"height\":45,\"caption\":\"Vived\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb\",\"name\":\"Tomasz Borowicz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g\",\"caption\":\"Tomasz Borowicz\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Co w Chrome piszczy | Frontend Weekly vol. 128 - Vived","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/","og_locale":"pl_PL","og_type":"article","og_title":"Co w Chrome piszczy | Frontend Weekly vol. 128 - Vived","og_description":"Miniony tydzie\u0144 zdominowany by\u0142 przez nowo\u015bci jakie trafi\u0142y w\u0142a\u015bnie do Chrome. Wi\u0119kszo\u015b\u0107 z nich to na razie eksperymenty, ale trzymamy kciuki, \u017ceby jak najszybciej trafi\u0142y do standardu. Poza tym mamy dla Was kilka raport\u00f3w na temat renderowania po stronie serwera i pezentacj\u0119 przysz\u0142ego zab\u00f3jcy TypeScript*.","og_url":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/","og_site_name":"Vived","article_published_time":"2023-03-10T13:45:40+00:00","article_modified_time":"2023-03-10T13:48:38+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-1.png","type":"image\/png"}],"author":"Tomasz Borowicz","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/"},"author":{"name":"Tomasz Borowicz","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb"},"headline":"Co w Chrome piszczy | Frontend Weekly vol. 128","datePublished":"2023-03-10T13:45:40+00:00","dateModified":"2023-03-10T13:48:38+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/"},"wordCount":867,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-1.png","articleSection":["Frontend"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/","url":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/","name":"Co w Chrome piszczy | Frontend Weekly vol. 128 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-1.png","datePublished":"2023-03-10T13:45:40+00:00","dateModified":"2023-03-10T13:48:38+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-1.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-1.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/co-w-chrome-piszczy-frontend-weekly-vol-128\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"Co w Chrome piszczy | Frontend Weekly vol. 128"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb","name":"Tomasz Borowicz","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g","caption":"Tomasz Borowicz"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>1. Co w Chrome piszczy<\/h2>\n","innerContent":["\n<h2>1. Co w Chrome piszczy<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W zesz\u0142ym tygodniu sporo uwagi po\u015bwi\u0119cili\u015bmy przegl\u0105darce od Apple, dlatego w tym tygodniu przyjrzymy si\u0119 troch\u0119 co w trawie piszczy po drugiej stronie balustrady. Co prawda nowo\u015bci w Chrome to eksperymentalne funkcjonalno\u015bci, niemniej jednak,  jest si\u0119 czym ekscytowa\u0107. <\/p>\n","innerContent":["\n<p>W zesz\u0142ym tygodniu sporo uwagi po\u015bwi\u0119cili\u015bmy przegl\u0105darce od Apple, dlatego w tym tygodniu przyjrzymy si\u0119 troch\u0119 co w trawie piszczy po drugiej stronie balustrady. Co prawda nowo\u015bci w Chrome to eksperymentalne funkcjonalno\u015bci, niemniej jednak,  jest si\u0119 czym ekscytowa\u0107. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>Tooltipy na jakie wszyscy zas\u0142ugujemy<\/h3>\n","innerContent":["\n<h3>Tooltipy na jakie wszyscy zas\u0142ugujemy<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Od lat tworzenie atrakcyjnych tooltip\u00f3w by\u0142o udr\u0119k\u0105 dla Fontend Developer\u00f3w. Teoretycznie jeste\u015bmy w stanie stowrzy\u0107 Tooltip przy u\u017cyciu samych CSS'\u00f3w. W praktyce szybko okazuje si\u0119, \u017ce w ten spos\u00f3b nie jeste\u015bmy w stanie zaimplementowa\u0107 opytmalnego pozycjonowania. Dobrze zaprogramowany Tooltop zawsze zmie\u015bci si\u0119 na ekranie i zawsze zachowuje odpowiednie proporcje wzgl\u0119dem elemntu do kt\u00f3rego jest zaczepiony. Niestety, bez JavaScriptu i skomplikowanych bibliotek ani rusz.<\/p>\n","innerContent":["\n<p>Od lat tworzenie atrakcyjnych tooltip\u00f3w by\u0142o udr\u0119k\u0105 dla Fontend Developer\u00f3w. Teoretycznie jeste\u015bmy w stanie stowrzy\u0107 Tooltip przy u\u017cyciu samych CSS'\u00f3w. W praktyce szybko okazuje si\u0119, \u017ce w ten spos\u00f3b nie jeste\u015bmy w stanie zaimplementowa\u0107 opytmalnego pozycjonowania. Dobrze zaprogramowany Tooltop zawsze zmie\u015bci si\u0119 na ekranie i zawsze zachowuje odpowiednie proporcje wzgl\u0119dem elemntu do kt\u00f3rego jest zaczepiony. Niestety, bez JavaScriptu i skomplikowanych bibliotek ani rusz.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W najnowszym Chrome za eksperymentaln\u0105 flag\u0105 dodana zosta\u0142a funkcja <code>anchor<\/code>, kt\u00f3ra zmienia zasady gry. Dzi\u0119ki niej mo\u017cemy dowolnie pozycjonowa\u0107 nasze Tooltipy w CSS'ach, a skomplikowan\u0105 logik\u0105 pozycjonowania zajmie si\u0119 Chrome. Funkcja <code>anchor<\/code> przyjmuje trzy argumenty (ID kotwicy, stron\u0119 (top\/bottom\/left\/righ), domy\u015bln\u0105 warto\u015b\u0107) i zwraca relatywn\u0105 wsp\u00f3\u0142rz\u0119dn\u0105 wzgl\u0119dem kotwicy. Opr\u00f3cz samej funkcji <code>anchor<\/code> w nasze r\u0119ce trafia te\u017c propery <code>anchor-scroll<\/code>, kt\u00f3re umo\u017cliwi nam reagowanie na scroll przegl\u0105darki i funkcja <code>anchor-size<\/code>, kt\u00f3re pozwoli pozyjnonowa\u0107 Tooltip w zale\u017cno\u015bci od wielko\u015bci elementu do kt\u00f3rego zaczepiamy Tooltip. <\/p>\n","innerContent":["\n<p>W najnowszym Chrome za eksperymentaln\u0105 flag\u0105 dodana zosta\u0142a funkcja <code>anchor<\/code>, kt\u00f3ra zmienia zasady gry. Dzi\u0119ki niej mo\u017cemy dowolnie pozycjonowa\u0107 nasze Tooltipy w CSS'ach, a skomplikowan\u0105 logik\u0105 pozycjonowania zajmie si\u0119 Chrome. Funkcja <code>anchor<\/code> przyjmuje trzy argumenty (ID kotwicy, stron\u0119 (top\/bottom\/left\/righ), domy\u015bln\u0105 warto\u015b\u0107) i zwraca relatywn\u0105 wsp\u00f3\u0142rz\u0119dn\u0105 wzgl\u0119dem kotwicy. Opr\u00f3cz samej funkcji <code>anchor<\/code> w nasze r\u0119ce trafia te\u017c propery <code>anchor-scroll<\/code>, kt\u00f3re umo\u017cliwi nam reagowanie na scroll przegl\u0105darki i funkcja <code>anchor-size<\/code>, kt\u00f3re pozwoli pozyjnonowa\u0107 Tooltip w zale\u017cno\u015bci od wielko\u015bci elementu do kt\u00f3rego zaczepiamy Tooltip. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"prismatic\/blocks","attrs":{"language":"css"},"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-css\">.anchor {\n  anchor-name: --my-anchor;\n}\n\n.tooltip {\n  bottom: anchor(--my-anchor top);\n  left: calc(anchor(--my-anchor center) - (var(--boat-size) * 0.5));\n   width: calc(4 * anchor-size(--my-anchor width));\n}<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-css\">.anchor {\n  anchor-name: --my-anchor;\n}\n\n.tooltip {\n  bottom: anchor(--my-anchor top);\n  left: calc(anchor(--my-anchor center) - (var(--boat-size) * 0.5));\n   width: calc(4 * anchor-size(--my-anchor width));\n}<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<p class=\"has-text-align-center\"><a href=\"https:\/\/developer.chrome.com\/blog\/tether-elements-to-each-other-with-css-anchor-positioning\/#using-anchor-positioning\" target=\"_blank\" rel=\"noreferrer noopener\">Tether elements to each other with CSS anchor positioning<\/a><\/p>\n","innerContent":["\n<p class=\"has-text-align-center\"><a href=\"https:\/\/developer.chrome.com\/blog\/tether-elements-to-each-other-with-css-anchor-positioning\/#using-anchor-positioning\" target=\"_blank\" rel=\"noreferrer noopener\">Tether elements to each other with CSS anchor positioning<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>Nag\u0142\u00f3wki na jakie wszyscy zas\u0142ugujemy<\/h3>\n","innerContent":["\n<h3>Nag\u0142\u00f3wki na jakie wszyscy zas\u0142ugujemy<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Kolejn\u0105 eksperymentaln\u0105 funkcjonalno\u015bci\u0105 w najnowszym Chrome jest property <code>text-wrap:balance<\/code>, kt\u00f3ra pozwala nam zbalansowa\u0107 d\u0142ugo\u015b\u0107 linii w danym tek\u015bcie. Co wa\u017cne, tekst nie mo\u017ce przekracza\u0107 4 linijek, dlatego nowe property nada sie tylko do stylowania nag\u0142\u00f3wk\u00f3w i kt\u00f3tkich opis\u00f3w pod zdj\u0119ciami czy snippetami kodu.<\/p>\n","innerContent":["\n<p>Kolejn\u0105 eksperymentaln\u0105 funkcjonalno\u015bci\u0105 w najnowszym Chrome jest property <code>text-wrap:balance<\/code>, kt\u00f3ra pozwala nam zbalansowa\u0107 d\u0142ugo\u015b\u0107 linii w danym tek\u015bcie. Co wa\u017cne, tekst nie mo\u017ce przekracza\u0107 4 linijek, dlatego nowe property nada sie tylko do stylowania nag\u0142\u00f3wk\u00f3w i kt\u00f3tkich opis\u00f3w pod zdj\u0119ciami czy snippetami kodu.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"prismatic\/blocks","attrs":{"language":"css"},"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-css\">h1, h2, h3, h4, h5, h6, caption, figcaption {\n    text-wrap: balance;\n}<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-css\">h1, h2, h3, h4, h5, h6, caption, figcaption {\n    text-wrap: balance;\n}<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":15049,"width":715,"height":583,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Screenshot-2023-03-10-at-11.11.35-1024x835.png\" alt=\"\" class=\"wp-image-15049\" width=\"715\" height=\"583\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Screenshot-2023-03-10-at-11.11.35-1024x835.png\" alt=\"\" class=\"wp-image-15049\" width=\"715\" height=\"583\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<p class=\"has-text-align-center\"><a href=\"https:\/\/clagnut.com\/blog\/2424\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Balance your headers and captions with new balance property<\/a><\/p>\n","innerContent":["\n<p class=\"has-text-align-center\"><a href=\"https:\/\/clagnut.com\/blog\/2424\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Balance your headers and captions with new balance property<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>Headless Chrome na jaki wszyscy zas\u0142ugujemy<\/h3>\n","innerContent":["\n<h3>Headless Chrome na jaki wszyscy zas\u0142ugujemy<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Czy wiecie, \u017ce headless Chrome, kt\u00f3rego u\u017cywacie w testach E2E, tak naprawd\u0119 ma niewiele wsp\u00f3lnego z Chrome, kt\u00f3ry zainstalowany jest na waszych komputerach? Okazuje si\u0119, \u017ce Chrome Headless jest osobn\u0105 przegl\u0105dark\u0105 rozwijan\u0105 przez zesp\u00f3\u0142. A\u017c ci\u0119\u017cko w to uwierzy\u0107, patrz\u0105c na poziom feature parity jaki uda\u0142o si\u0119 osi\u0105gn\u0105\u0107. Bior\u0105c pod uwag\u0119 wysi\u0142ek jaki musia\u0142 zosta\u0107 w\u0142o\u017cony w utrzymanie drugiej przegl\u0105dark, nie dziwi decyzja, \u017ceby po\u0142\u0105czy\u0107 obie wersje Chrome.<\/p>\n","innerContent":["\n<p>Czy wiecie, \u017ce headless Chrome, kt\u00f3rego u\u017cywacie w testach E2E, tak naprawd\u0119 ma niewiele wsp\u00f3lnego z Chrome, kt\u00f3ry zainstalowany jest na waszych komputerach? Okazuje si\u0119, \u017ce Chrome Headless jest osobn\u0105 przegl\u0105dark\u0105 rozwijan\u0105 przez zesp\u00f3\u0142. A\u017c ci\u0119\u017cko w to uwierzy\u0107, patrz\u0105c na poziom feature parity jaki uda\u0142o si\u0119 osi\u0105gn\u0105\u0107. Bior\u0105c pod uwag\u0119 wysi\u0142ek jaki musia\u0142 zosta\u0107 w\u0142o\u017cony w utrzymanie drugiej przegl\u0105dark, nie dziwi decyzja, \u017ceby po\u0142\u0105czy\u0107 obie wersje Chrome.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Do najnowszego Chrome trafi\u0142a flaga, <code>--headless=new<\/code>, kt\u00f3ra uruchamia now\u0105 zunifikowana przegl\u0105dark\u0119 w trybie headless. Chrome nadal rozwija\u0142 b\u0119dzie star\u0105 alternatywn\u0105 wersj\u0119 przegl\u0105darki (ze wzgl\u0119du na kompatyblino\u015b\u0107 wsteczn\u0105, to ona b\u0119dzie si\u0119 uruchami\u0107 z flg\u0105 <code>--headless<\/code>), ale zesp\u00f3l liczy na to, \u017ce z czasem uda si\u0119 j\u0105 jako\u015b wygasi\u0107.<\/p>\n","innerContent":["\n<p>Do najnowszego Chrome trafi\u0142a flaga, <code>--headless=new<\/code>, kt\u00f3ra uruchamia now\u0105 zunifikowana przegl\u0105dark\u0119 w trybie headless. Chrome nadal rozwija\u0142 b\u0119dzie star\u0105 alternatywn\u0105 wersj\u0119 przegl\u0105darki (ze wzgl\u0119du na kompatyblino\u015b\u0107 wsteczn\u0105, to ona b\u0119dzie si\u0119 uruchami\u0107 z flg\u0105 <code>--headless<\/code>), ale zesp\u00f3l liczy na to, \u017ce z czasem uda si\u0119 j\u0105 jako\u015b wygasi\u0107.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<p class=\"has-text-align-center\"><a href=\"https:\/\/developer.chrome.com\/articles\/new-headless\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Chrome\u2019s Headless mode gets an upgrade<\/a><\/p>\n","innerContent":["\n<p class=\"has-text-align-center\"><a href=\"https:\/\/developer.chrome.com\/articles\/new-headless\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Chrome\u2019s Headless mode gets an upgrade<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. Por\u00f3wnanie framework\u00f3w do Server Side Renderigu<\/h2>\n","innerContent":["\n<h2>2. Por\u00f3wnanie framework\u00f3w do Server Side Renderigu<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Raporty i podsumowania, to to co lubimy w Vived najbardziej. W minioym tygodniu ukaza\u0142y si\u0119 dwa bardzo ciekawe zestawienia por\u00f3wnuj\u0105ce frameworki do renderowania po stronie serwera. <\/p>\n","innerContent":["\n<p>Raporty i podsumowania, to to co lubimy w Vived najbardziej. W minioym tygodniu ukaza\u0142y si\u0119 dwa bardzo ciekawe zestawienia por\u00f3wnuj\u0105ce frameworki do renderowania po stronie serwera. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Pierwsze z nich zosta\u0142o przygotowane przez zesp\u00f3\u0142 Astro i bazuje na rzeczywistych danych u\u017cytkownik\u00f3w zebranych przez Chrome. <strong>TLDR;<\/strong> We wszystkich analizowanych kategoriach wygrywa Astro, SvelteKit i Remix, zostawiaj\u0105c w tyle Next.js, Nuxt czy WordPress. Na wyniki nale\u017cy jednak patrze\u0107 troch\u0119 przez palce. Po pierwsze, frameworki, kt\u00f3re zosta\u0142y z ty\u0142u maj\u0105 ju\u017c swoje lata i sporo z nich to od dawna nie utrzymywane projekty. Po drugie, wysuwaj\u0105ce si\u0119 na czo\u0142o frameworki stoj\u0105 za ma\u0142ym procentem stron w internecie i u\u017cywane s\u0105 g\u0142\u00f3wnie przez technologicznych pasjonat\u00f3w.<\/p>\n","innerContent":["\n<p>Pierwsze z nich zosta\u0142o przygotowane przez zesp\u00f3\u0142 Astro i bazuje na rzeczywistych danych u\u017cytkownik\u00f3w zebranych przez Chrome. <strong>TLDR;<\/strong> We wszystkich analizowanych kategoriach wygrywa Astro, SvelteKit i Remix, zostawiaj\u0105c w tyle Next.js, Nuxt czy WordPress. Na wyniki nale\u017cy jednak patrze\u0107 troch\u0119 przez palce. Po pierwsze, frameworki, kt\u00f3re zosta\u0142y z ty\u0142u maj\u0105 ju\u017c swoje lata i sporo z nich to od dawna nie utrzymywane projekty. Po drugie, wysuwaj\u0105ce si\u0119 na czo\u0142o frameworki stoj\u0105 za ma\u0142ym procentem stron w internecie i u\u017cywane s\u0105 g\u0142\u00f3wnie przez technologicznych pasjonat\u00f3w.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<p class=\"has-text-align-center\"><a href=\"https:\/\/astro.build\/blog\/2023-web-framework-performance-report\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">2023 Web Framework Performance Report<\/a><\/p>\n","innerContent":["\n<p class=\"has-text-align-center\"><a href=\"https:\/\/astro.build\/blog\/2023-web-framework-performance-report\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">2023 Web Framework Performance Report<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Drugi raport przygotowany zosta\u0142 przez tw\u00f3rc\u0119 Eleventy i skupia si\u0119 na przeprowadzonych lokalnie testach. Pod uwag\u0119 wzi\u0119ty zosta\u0142 czas budowania aplikacji, rozmiar paczki wysy\u0142anej do klienta czy ilo\u015b\u0107 zewn\u0119trznych dependencji. <strong>TLDR;<\/strong> W wi\u0119kszo\u015bci analizowanych kategorii na czo\u0142o ponownie wysuwa si\u0119 Eleventy, Astro i SvelteKit. Tym razem pozosta\u0142e frameworki nie pozostaj\u0105 jednak daleko w tyle i w zale\u017cno\u015bci od kategorii w pierwszej tr\u00f3jce przewija si\u0119 chocia\u017cby Next.js czy ma\u0142o znany Enhance.<\/p>\n","innerContent":["\n<p>Drugi raport przygotowany zosta\u0142 przez tw\u00f3rc\u0119 Eleventy i skupia si\u0119 na przeprowadzonych lokalnie testach. Pod uwag\u0119 wzi\u0119ty zosta\u0142 czas budowania aplikacji, rozmiar paczki wysy\u0142anej do klienta czy ilo\u015b\u0107 zewn\u0119trznych dependencji. <strong>TLDR;<\/strong> W wi\u0119kszo\u015bci analizowanych kategorii na czo\u0142o ponownie wysuwa si\u0119 Eleventy, Astro i SvelteKit. Tym razem pozosta\u0142e frameworki nie pozostaj\u0105 jednak daleko w tyle i w zale\u017cno\u015bci od kategorii w pierwszej tr\u00f3jce przewija si\u0119 chocia\u017cby Next.js czy ma\u0142o znany Enhance.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<p class=\"has-text-align-center\"><a href=\"https:\/\/www.zachleat.com\/web\/site-generator-review\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">The javascript site generator review, 2023<\/a><\/p>\n","innerContent":["\n<p class=\"has-text-align-center\"><a href=\"https:\/\/www.zachleat.com\/web\/site-generator-review\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">The javascript site generator review, 2023<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>3. O co chodzi z tymi React Server Components?<\/h2>\n","innerContent":["\n<h2>3. O co chodzi z tymi React Server Components?<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>O React Server Components sporo si\u0119 m\u00f3wi, ale tak naprawd\u0119 ci\u0119\u017cko znale\u017a\u0107 zwi\u0119z\u0142e i dobre wyt\u0142umaczenie tej koncepcji. Na ratunek jak zwykle przychodzi Josh W Comeau, kt\u00f3rego mo\u017cecie kojarzy\u0107 z \u015bwietnych publikacji na temat Reacta. Co prawda tym razem nie mamy do czynienia z blogpostem, a z Twitterowym w\u0105tkiem dotycz\u0105cym po\u0142\u0105czenia Styled Components z React Server Components, ale jest to najlepsze przedstawienie tematu jakie do tej pory widzia\u0142em.<\/p>\n","innerContent":["\n<p>O React Server Components sporo si\u0119 m\u00f3wi, ale tak naprawd\u0119 ci\u0119\u017cko znale\u017a\u0107 zwi\u0119z\u0142e i dobre wyt\u0142umaczenie tej koncepcji. Na ratunek jak zwykle przychodzi Josh W Comeau, kt\u00f3rego mo\u017cecie kojarzy\u0107 z \u015bwietnych publikacji na temat Reacta. Co prawda tym razem nie mamy do czynienia z blogpostem, a z Twitterowym w\u0105tkiem dotycz\u0105cym po\u0142\u0105czenia Styled Components z React Server Components, ale jest to najlepsze przedstawienie tematu jakie do tej pory widzia\u0142em.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/embed","attrs":{"url":"https:\/\/twitter.com\/JoshWComeau\/status\/1631398854632304641","type":"rich","providerNameSlug":"twitter","responsive":true,"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-embed aligncenter is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/twitter.com\/JoshWComeau\/status\/1631398854632304641\n<\/div><\/figure>\n","innerContent":["\n<figure class=\"wp-block-embed aligncenter is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/twitter.com\/JoshWComeau\/status\/1631398854632304641\n<\/div><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>4. Civet<\/h2>\n","innerContent":["\n<h2>4. Civet<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Na zako\u0144czenie dzisiejszego przegl\u0105du ma\u0142a ciekawostka dla wszystkich znudzonych tempem rozwoju TypeScript. Civiet to nowy j\u0119zyk kompilowany do JavaScript i TypeScript, kt\u00f3ry oferuje implementacj\u0119 wielu funkcjonalno\u015bci, kt\u00f3re od d\u0142u\u017cszego czasu tkwi\u0105 w TC39 Pipeline (np. <a href=\"https:\/\/github.com\/tc39\/proposal-pattern-matching\" target=\"_blank\" rel=\"noreferrer noopener\">Pattern Matching<\/a>, <a href=\"https:\/\/github.com\/tc39\/proposal-pipeline-operator\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Pipe Operator<\/a>). Czy TypeScript ma si\u0119 czego obawai\u0107? Raczej nie. Czy Civet szturmem zawojuje serca deweloper\u00f3w? Raczej nie. Czy Civet wygl\u0105da interesuj\u0105co? Zdecydowanie tak!<\/p>\n","innerContent":["\n<p>Na zako\u0144czenie dzisiejszego przegl\u0105du ma\u0142a ciekawostka dla wszystkich znudzonych tempem rozwoju TypeScript. Civiet to nowy j\u0119zyk kompilowany do JavaScript i TypeScript, kt\u00f3ry oferuje implementacj\u0119 wielu funkcjonalno\u015bci, kt\u00f3re od d\u0142u\u017cszego czasu tkwi\u0105 w TC39 Pipeline (np. <a href=\"https:\/\/github.com\/tc39\/proposal-pattern-matching\" target=\"_blank\" rel=\"noreferrer noopener\">Pattern Matching<\/a>, <a href=\"https:\/\/github.com\/tc39\/proposal-pipeline-operator\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Pipe Operator<\/a>). Czy TypeScript ma si\u0119 czego obawai\u0107? Raczej nie. Czy Civet szturmem zawojuje serca deweloper\u00f3w? Raczej nie. Czy Civet wygl\u0105da interesuj\u0105co? Zdecydowanie tak!<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"prismatic\/blocks","attrs":{"language":"typescript"},"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-typescript\">\/\/ Pattern Matching\nswitch x\n  0\n    console.log(\"zero\")\n  \/^\\s+$\/\n    console.log(\"whitespace\")\n  [{type: \"text\", content}, ...rest]\n    console.log(\"leading text\", content)<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-typescript\">\/\/ Pattern Matching\nswitch x\n  0\n    console.log(\"zero\")\n  \/^\\s+$\/\n    console.log(\"whitespace\")\n  [{type: \"text\", content}, ...rest]\n    console.log(\"leading text\", content)<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"prismatic\/blocks","attrs":{"language":"typescript"},"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-typescript\">\/\/ Single-Argument Function Shorthand\nx.map .name\nx.map &amp;.profile?.name[0...3]\nx.map &amp;.callback a, b\nx.map &amp;+1\nx.map -&amp;<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-typescript\">\/\/ Single-Argument Function Shorthand\nx.map .name\nx.map &amp;.profile?.name[0...3]\nx.map &amp;.callback a, b\nx.map &amp;+1\nx.map -&amp;<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"prismatic\/blocks","attrs":{"language":"typescript"},"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-typescript\">\/\/ Pipelines\ndata\n  |> Object.keys\n  |> console.log<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-typescript\">\/\/ Pipelines\ndata\n  |> Object.keys\n  |> console.log<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<p class=\"has-text-align-center\"><a href=\"https:\/\/civet.dev\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Civer - The Modern Way to Write TypeScript<\/a><\/p>\n","innerContent":["\n<p class=\"has-text-align-center\"><a href=\"https:\/\/civet.dev\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Civer - The Modern Way to Write TypeScript<\/a><\/p>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/15055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/comments?post=15055"}],"version-history":[{"count":5,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/15055\/revisions"}],"predecessor-version":[{"id":15070,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/15055\/revisions\/15070"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/15059"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=15055"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=15055"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=15055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}