tillbaka till startsidan

20. React-teamets julklapp: Server Components

Lyssna på Spotify lyssna! Lyssna på iTunes

I det första avsnittet inspelat 2021 ventilerar vi först lite om ångesten över semesterslut och långa startsträckor, men sen hoppar vi in på dagens huvudsakliga ämne: React Server Components. Ett nytt sätt att skriva Reactapplikationer där du kan välja vilka komponenter som körs i webbläsaren och vilka som renderar på servern. Anton har testat och är (som vanligt) rätt pepp!

Om du gillar podden blir vi väldigt glada för en liten recension i iTunes eller en prenumeration på Spotify. Följ oss och säg hej på @asdfpodden på Instagram eller Twitter (Anton, Therése) <3

Länkar

Avsnittets skämt:

Varför var den funktionella programmeraren så bra på att läsa grafer?
Dålig Scala.
Skrapa här!!
Transkribering
Transkriberingen är gjord av nån "AI-grej". Du kan förbättra den genom att klicka precis här :)
00:00:00
Varför var den funktionella programmeraren så dålig på att läsa grafer?
00:00:05
Ehh... Gud, jag kommer inte ens på en funktionell språk som det här kan dras till.
00:00:13
Jag vet inte, varför?
00:00:14
Dålig skala.
00:00:15
Alltså, ja...
00:00:17
Och jag satt och tänkte, ja, Haskell. Det kan man inte få ett tillitskämt på.
00:00:23
Challenge accepted, nej.
00:00:26
Ja, varsågod. Till nästa avsnitt hoppas vi på.
00:00:29
Ja, det kommer inte att bli något.
00:00:31
Okej, välkomna till ett nytt avsnitt av ASDF.
00:00:34
Jag känner mig jävligt ringrostig.
00:00:37
Jag har fan inte poddat på två månader.
00:00:40
Nej, det är trögstartat nu känner jag.
00:00:43
Vi körde ju en batch med avsnitt innan jul för att kunna vara lite lediga inom situationssägen.
00:00:49
Och det funkar bra ändå.
00:00:52
Men nu är det ju exakt så här segstartat var jag efter jul med jobbet också.
00:00:57
Ja, jag har bara en känsla av att så här obekväm har jag nog inte känt mig på länge.
00:01:04
Lite så.
00:01:06
Ja, men det förstår jag. Jag hade det extremt tungt att komma tillbaka till jobbet.
00:01:12
Ja, jag hade nog snarare så här att jag hade otroligt mycket ångest över att komma tillbaka till jobbet.
00:01:18
Jag ville verkligen, verkligen inte. Men första dagen där så rivstartade det bara.
00:01:22
Och då har det bara rullat sen dess.
00:01:24
Ja, men det är ju nice. Jag tror min startsträcka var en vecka innan jag kände att nu börjar jag.
00:01:29
Nu är jag vant mig att jobba igen.
00:01:31
Och då hade jag bara varit ledig två veckor över jul.
00:01:34
Ja, du var ledig fyra veckor.
00:01:36
Ja, exakt. Du kanske kom över någon puckel där att när du väl kom tillbaka så hade du en energi.
00:01:41
Ja, för jag tror fjärde veckan så kände jag mig nog stress...
00:01:47
-3,5 dag, för att sista tiden gick jag åt till att stressa efter att jag var trungen att börja jobba igen.
00:01:53
-Ja, men du hade ändå en halv vecka.
00:01:59
-Ja, för jag kollade på mitt sömnmönster. Det var någon vecka då jag faktiskt sov mer än 8 timmar varje natt.
00:02:05
Och det har ju inte hänt sedan jag skaffade min jävla Apple Watch.
00:02:10
-Ja, men det är ju spännande ändå. Men det är ju fan kul att vara igång igen, tycker jag. Jag är ändå taggad.
00:02:16
- Ja, du är ju pepp. - Jag är ju pepp, som vanligt.
00:02:18
[Skratt]
00:02:19
En grej som hände över jul var ju att React-teamet gick ut med en bloggpost
00:02:25
där de pratade om React Server Components, eller introducerade det,
00:02:29
som är någon experimentell grej de pysslar med.
00:02:34
Och de sa "här är en julklapp från React-teamet".
00:02:37
Men jag tänkte att vi kunde snacka lite grann om det idag, kanske.
00:02:40
- Mm, det kan vi göra.
00:02:42
Jag såg den och jag likade den och läste den inte som rimligt millennial på sociala mediebeteende.
00:02:49
Exakt.
00:02:50
Så det får du gärna...
00:02:51
Du fick liksom ingen varning så här "Vill du verkligen lika den här?"
00:02:54
Även fast du inte har läst den.
00:02:56
Nej.
00:02:57
Det är väl bara retweets på Twitter som har den funktionen tror jag.
00:03:00
Ja, och de introducerade det i en bloggpost som var första grejen.
00:03:07
Sen finns det en video som är typ en timme lång där Dan Abramov och Lauren Tan går igenom vad det är för något, varför de har gjort det och en demo.
00:03:18
Sen finns det en demo som sagt, så det är open source.
00:03:21
Och sen finns det även en RFC, alltså vad det står för, Request for Comments.
00:03:27
Ja.
00:03:29
Tror jag, som är det. Det är liksom ett sätt att föreslå ändringar typ på saker.
00:03:36
Ja, det är väl ett sätt för dem att öppna upp och ge oss feedback. Vi vill ha feedback.
00:03:40
Ja, men exakt. Och den är lite mer teknisk.
00:03:45
Så jag har tagit mig och tragglat mig genom allt av det här.
00:03:49
Men det var två veckor sedan kanske, så jag är inte helt up to date på allt som händer.
00:03:54
Men om man ska sammanfatta det väldigt kort så är det ju egentligen ett sätt
00:03:59
För vissa komponenter att köra via servern eller rendera via servern.
00:04:05
Och samtidigt kunna ha vissa komponenter som bara renderar på klienten.
00:04:10
Det är egentligen vad det är för något.
00:04:14
Anledningen till att de gör det här, de pratar i den här videon som jag kan rekommendera.
00:04:19
Är man intresserad så rekommenderar jag verkligen att kolla på den.
00:04:21
Den är bra mycket om det här "good, fast, cheap".
00:04:24
Som brukar vara en triangel där man kan välja två.
00:04:27
Och enligt det här tycker de att det här är en lösning där du kan få alla tre.
00:04:30
Du kan få bra UX, du kan få bra snabb performance, och den kommer inte göra banden större.
00:04:42
För det är också den stora grejen att serverkomponenter påverkar din JavaScript-bandel 0%.
00:04:48
Det är liksom 0,0 KB.
00:04:52
Ja, men är det tänkt att det är komponenter som du renderar på servern,
00:04:57
sen när du börjar interagera med dem tar klient-renderingen över?
00:05:01
Nej. Det är här som är lite skillnaden jämfört med server-rendering.
00:05:05
Jag har inte ens kört skitmycket server-rendering i React.
00:05:07
Jag har kört ganska mycket.
00:05:09
För där är det ofta att du server-renderar bara "first load" egentligen.
00:05:14
Och sen så har du att du har den här "rehydrate" eller "hydrate" eller vad det nu kallas.
00:05:19
där man låter JavaScript ta över renderingen.
00:05:23
I det här fallet är det en av de stora skillnaderna att
00:05:27
här kan du fetcha om dina serverkomponenter hur många gånger du vill.
00:05:31
Så en serverkomponent renderas alltid på servern.
00:05:35
- Okej, men då kommer du ändå vilja välja sådana komponenter som inte är
00:05:41
är att du som användare i UX vill ha direkt återkoppling?
00:05:52
Ja och nej kanske. Det finns lite fasta begränsningar, eller hårda begränsningar.
00:05:58
Det är typ att serverkomponenter inte kan ha något state eller interaktivitet.
00:06:04
Alltså det vill säga att de inte kan innehålla just state eller just effekt.
00:06:07
Då blir det ingen interaktivitet från en användare?
00:06:10
Nej, exakt. Och de kan inte ha interaktioner med domen eller clickhandlers och sådana grejer.
00:06:16
Så det är en hård begränsning som finns.
00:06:19
Och sen tror jag den andra begränsningen är att den props de tar måste vara serialiserbara.
00:06:27
Alltså kunna serialiseras till JSON i stort sett.
00:06:31
Så att du kan till exempel inte skicka in en funktion, för den kan man inte serialisera.
00:06:34
Och sen finns det väl några fler undantagsfall som inte kan serialiseras.
00:06:39
Men det är typ de begränsningar som finns.
00:06:41
Sen då, gör ju det inte så mycket.
00:06:45
Jag kan ta ett exempel snart, som jag tycker illustrerar jävligt bra vad det är för något.
00:06:52
Men i vilket fall, det man gör egentligen är att man rent praktiskt
00:06:57
så döper komponenterna till komponentnamn.server.js
00:07:01
eller komponentnamn.client.js
00:07:04
Då indikerar du om det är en klientkomponent eller en serverkomponent.
00:07:09
Har de då server-suffixet så körs de på serverna och har de en client så körs de på klienten.
00:07:16
Lämnar du det där suffixet helt och hållet så att de inte har något av dem,
00:07:20
då säger man egentligen att den här kan köras på båda ställena.
00:07:24
Den kan dyka upp så att klienten renderar den om det är så,
00:07:28
men är det så att servern renderar den, då kommer den att renderas på servern.
00:07:32
Men då skulle det fortfarande innebära att den måste ha de restriktionerna?
00:07:36
Exakt, precis. Så att det blir fortfarande samma restriktioner men den liksom
00:07:40
säger att en klientkomponent renderar en komponent som inte är spesad
00:07:45
då kommer den förmodligen att renderas av servern.
00:07:48
Eller förlåt, av klienten såklart.
00:07:50
Och tvärtom, om serverkomponenten renderar en så kommer den att renderas av servern.
00:07:53
Om det liksom är ett barn till en serverkomponent.
00:07:56
Ja.
00:07:57
Jag kan serverkomponenterna ha klientbarn?
00:08:00
Och det här är också lite coolt för att det som händer när servern renderar de här
00:08:07
det är inte att den skriver ut det till domobjekt eller demmer eller någonting sånt
00:08:13
inte heller JSON utan det är något annat.
00:08:16
Exakt vad det är är något som är specifikt till React Server Components.
00:08:21
Så den datorn som skickas mellan servern och klienten är något som är
00:08:26
som är "Det här är bara för React Server Components, det här är den datan den behöver".
00:08:31
Varför det är gjort så vet jag inte. Jag tror att de går in lite på det i RFC och varför det funkar så och hur det ser ut.
00:08:37
Men det känns som att är man inte känd av det kan man läsa den så att säga.
00:08:41
Men mycket av det den möjliggör är bland annat att
00:08:46
till exempel då i ditt fall som du sa att du har en serverkomponent som har ett klientkomponent som barn.
00:08:53
Om serverkomponenten ska renderas om, säg att vi ändrar props på den till exempel.
00:08:58
Då kommer den requesta den från servern och servern svarar med det här datat.
00:09:02
Och då kommer fortfarande statet i klientkomponenten som den har som barn.
00:09:09
Det kommer fortfarande behållas.
00:09:11
Så det är en stor skillnad till exempel med serverrendering.
00:09:15
Där blåser man ut och staten försvinner, men här kan den behålla allting.
00:09:18
Och det är för att de har gjort massa smart i React som håller koll på om det här är barnkomponenter och om de är klientkomponenter med state eller inte.
00:09:28
- Ja just det, fan vad avancerat. - Det är, när jag började kolla på det här så kände jag, fan det här kommer bli komplext.
00:09:36
Och liksom så här, fan, och kände liksom att det blir ytterligare ett abstraktionslager på något sätt.
00:09:42
Det krävs någon typ av Node-server i bakgrunden också.
00:09:47
Jag tror att det är bara där det funkar med just nu.
00:09:49
Jag vet inte om det finns planer på att det ska funka med andra backends, men
00:09:53
det är liksom som det är uppsatt just nu.
00:09:55
Sen...
00:09:58
Det här demot är också väldigt coolt.
00:10:03
Det är bara en "to do"-app, eller "note-app". Du kan skriva anteckningar i.
00:10:07
I stort sett.
00:10:09
Och det är hela appen. Men den visar ganska bra på saker man kan göra.
00:10:13
Och det de har till exempel är en sök-komponent som är serverrenderad.
00:10:21
Eller en resultat-komponent kanske man ska säga.
00:10:27
Själva inputen är såklart klientrenderad för att den måste ha lite domhantering och "on-change-handlers" och sånt.
00:10:35
Men själva resultatlistan, den som visar resultatet och den som gör själva sökningen, den är serverenderad.
00:10:40
Och det enda de gör i det här exemplet är att de skickar in en prop som då är typ "search string".
00:10:47
Vilket då är det man söker på.
00:10:49
Och det som händer är att varje gång du ändrar den proppen då kommer den då gå till servern och hämta den här komponenten.
00:10:55
I serverkomponenten, och nu blir det lite mindfucket.
00:11:01
Det de gör i det här exemplet, och de rekommenderar att man inte ska göra så här, men det är bara för att bevisa att det går,
00:11:06
är att de använder i komponenten, så använder de Node, för att querja en databas direkt i komponenten med SQL.
00:11:17
Läsa upp resultatet baserat på den här proppen och sedan rendera ut det då.
00:11:21
Oj.
00:11:23
Ja.
00:11:24
Vänta, vem renderar? Är det den här serverkomponenten som renderar klientbarnet med inputfältet?
00:11:32
Eller klientbarnet med inputfältet skickar väl liksom sin...
00:11:37
Ja, men jag tror att inputfältet och listan är nog inte...
00:11:41
De är inte i samma hierarki så att säga.
00:11:43
Okej, men då får du ändå den här söksträngen från inputkomponenten.
00:11:48
Ja, precis.
00:11:49
Och passar den som prop.
00:11:50
Den passar till en prop till den här serverrenderade listan.
00:11:53
Som sedan då, med SQL.
00:11:55
Vi har en SQL-fråga.
00:11:57
Gå direkt till en databas via Node.
00:11:59
Få tillbaka resultatet.
00:12:01
Och då har vi den resultaten, så då skickar jag bara upp datan för hur det här skulle se ut.
00:12:05
Och sen kommer det att renderas.
00:12:07
Ja.
00:12:09
Och det är ju jävligt coolt.
00:12:13
För att helt plötsligt så behöver du inget API.
00:12:15
Nej.
00:12:17
I verkligheten vill man förmodligen inte göra ett SQL-anrop i koden, men du kan ju ha något annat.
00:12:22
Ett annat abstraktionslage som du läser vad du nu vill läsa.
00:12:26
Du kan till exempel läsa från disk.
00:12:29
Om du skulle vilja det.
00:12:30
Så det är mycket sådana här grejer som blir jävligt coolt plötsligt.
00:12:35
För att istället för att göra ett API-anrop, då ändrar du bara en prop.
00:12:39
Och så sker det automatiskt.
00:12:40
För att den kör på serverdelen.
00:12:46
Och då har ju den tillgång till sådana saker.
00:12:48
- Ja, det är lite sjukt alltså.
00:12:51
Och stökigt.
00:12:53
- Jag tror att det kan säkert bli jävligt stökigt.
00:12:55
Men där de pushas en mycket fördel med det här är ju att
00:12:58
det blir en hybridapp mellan server och klient.
00:13:01
Och att den skalan är ganska arbeträr eller sliding.
00:13:07
Du kan bestämma på en case by case basis
00:13:10
vad som ska vara på servern och vad som ska vara på klienten.
00:13:13
Istället för när man gör serverendering oftast gör att allt eller inget.
00:13:18
Ja, för jag kom väl in i webprogrammering, fan vad lite jag kunde webbföredra.
00:13:27
Men jag kom väl in efter hela POP-storhetstiden.
00:13:32
Men jag har väl sett att folk säger att det här är att gå tillbaka till POP.
00:13:36
Eller tankarna som fanns.
00:13:38
Det är mycket memes om POP is back.
00:13:42
Och det är väl för att det påminner lite grann om det.
00:13:44
Sen är det ju fortfarande att med PHP var det ju fortfarande att
00:13:48
det var ju kanske mer serverrendering där.
00:13:52
Det var ju liksom inte samma sak att du hade sin sådär,
00:13:54
du spesade en komponent om den skulle vara server eller klient.
00:13:58
För ska du köra den på klienten med PHP så behöver du ju jag och Skepticson.
00:14:01
Ja.
00:14:02
Så att jag skulle säga att det är väl, jag fattar folks memes.
00:14:07
Men det kanske inte är en helt rättvist liknelse.
00:14:11
Och sen då som sagt, som vi pratade om innan, att den behåller state. Till exempel då om, säg att varje item i den här listan med söksresultaten, de är ju interaktiva.
00:14:26
Så det är ju liksom en klientkomponent.
00:14:28
Okej, så att liksom serverkomponenten får resultaten och säger, rendera de här resultaten i komponenter då.
00:14:36
Exakt, och de har även lite state på om de är aktiva eller inte.
00:14:41
Om du klickar på den så dyker själva anteckningen upp till höger.
00:14:44
Så du har en sidebar till vänster i den här demot.
00:14:46
Det statet lever också kvar när du söker.
00:14:50
Så när du söker och säger att den du har valt fortfarande är kvar i listan
00:14:54
då kommer den fortfarande ha kvar sin markerad state.
00:14:56
Just det, för du inte wipar något state.
00:14:59
Exakt.
00:15:00
Däremot då ligger det väl på att då behöver du väl egentligen uppdatera ditt state
00:15:03
beroende på gamla och nya saker du får in i klientkomponenten?
00:15:09
Det blir inte så stor skillnad vad man behöver göra i vanliga fall.
00:15:13
För det som kommer hända är att den här listan uppdateras bara.
00:15:16
Och sen vilken som är aktiv, det spelar egentligen ingen roll.
00:15:19
Det blir fortfarande väldigt deklarativt.
00:15:22
Du klickar på en i listan, den öppnas som aktiv.
00:15:25
Du kanske söker och det som händer då är att listan uppdateras.
00:15:28
Finns det där itemet du klickade på kvar, då kommer den vara markerad.
00:15:31
finns det inte kvar, då är det inte markerat längre.
00:15:34
Om man inte söker igen och den går tillbaka, är den fortfarande markerad då?
00:15:38
Jag skulle tro det. Inte testat i det emot faktiskt, men det är en bra fråga.
00:15:44
Sådana där saker är väldigt spännande.
00:15:48
Det är ju sådana där saker som kan driva en till vansinne.
00:15:52
Ja, det är det ju definitivt.
00:15:55
Det var något jag tänkte säga.
00:16:02
Sen är det väl lite det här med att allt det här funkar med suspense.
00:16:06
Också out of the box.
00:16:08
Så om en serverkomponent tar lite länge på sig att svara och man har rappat den med suspense
00:16:13
så kan man använda det som fallback för loading states och transitions och grejer.
00:16:17
Ja och suspense är den här när man säger att man får en fallback på loading.
00:16:22
Så länge den fortfarande laddar så kan du visa någonting annat i gränssnittet innan det du faktiskt vill visa har laddat klart.
00:16:29
Exakt. Vi kan nästan prata i ett helt avsnitt om suspens också för det var en jävla lång resa för React på det mesta.
00:16:36
Med suspens och det som inte finns och det som finns i React nu och allt som är experimentellt.
00:16:41
Ja, för de backade väl lite med den där just för server-renderingen.
00:16:46
Liksom det där första caset, vi pratar inte det här då.
00:16:48
Utan att du renderar komponenter på både servern och klienten.
00:16:52
Det klarade väl inte suspense därifrån början.
00:16:54
Och då tror jag de väntade lite med att släppa allt.
00:16:56
Ja, men exakt. Så nu finns det vissa delar av suspense som de rekommenderar att använda.
00:17:01
Väldigt dålig på att använda suspens hittills faktiskt.
00:17:06
Jag vet inte om det blir tidspress eller man inte har tänkt på den.
00:17:09
Vi borde göra det mer i projekt.
00:17:11
Ja, men det känns som att det är en...
00:17:13
Jag tror att det är mycket kommen från kommunikationen
00:17:16
som React-teamet hade när de lanserade det.
00:17:19
Att det var så här "Titta vilken cool grej vi har gjort, använd den inte än."
00:17:22
Och sen bara "Fast den här grejen, den kan jag använda."
00:17:25
"Men inte det här."
00:17:26
"Ja, det här är typ klart, men förresten, det här kommer vi dra tillbaka."
00:17:29
"Vi måste tänka lite till på det."
00:17:31
Suspens kommer snart, tre år senare.
00:17:33
För ett tag när de pratade som S-hållare,
00:17:35
"Det här finns i alfan, men använd inte det i produktion."
00:17:38
Men inte i produktion. Så då vet jag att jag använder det i nån typ av hack-dej-grej.
00:17:46
Sen har jag nog glömt bort det, tror jag.
00:17:48
Ja, precis. Det är kraftfullt som fan, men man tänker aldrig på att använda det.
00:17:56
Det är så lätt att bara göra en if-loading.
00:17:59
-Gör det här istället. -Speciellt med hooks.
00:18:01
Ja, exakt. Jag är ganska taggad på det här. Det här är superexperimentellt också.
00:18:08
De är väldigt så här "använda inte det här i produktion, försök inte ens göra det, lär inte ut det i kurser eller någonting sånt,
00:18:18
utan det är absolut inte klart, det kommer säkert ändras jättemycket innan det är klart".
00:18:22
Uppenbarligen har den kommunikationen lärt sig av suspensfiaskot, kanske man får säga ändå.
00:18:28
Jag gick in på fel då, när jag skulle kolla igenom den här lite fort tänkte jag.
00:18:32
Så jag missade ju bloggposten utan jag gick in på videoposten.
00:18:35
Och där står det verkligen så här, vi har börjat kommunicera det här för transparens.
00:18:39
Och inte för att det egentligen är någonting som är klart.
00:18:42
Utan vi vill att ni ska se vad som händer.
00:18:45
Och sen med de andra som du säger, använd inte det här nu. Please.
00:18:50
Nej men exakt. Så det ska bli väldigt spännande att se fortsättningen, vart det landar.
00:18:55
Jag tror att det kommer hjälpa mest för olika frameworks som Next.
00:19:03
De kan använda det här på ett väldigt bra sätt.
00:19:07
Där har du att du kör en Node-server också redan nu.
00:19:12
Då kan man inkorporera det här på ett smidigare sätt än om man bara har kört en statisk app.
00:19:18
Ja, men det är intressant om man kollar den newscasen och vad det öppnar upp för.
00:19:23
Som till exempel nu så sitter jag ju i en klientrenderad applikation, där vi har jättemånga stora komponenter som gör GraphQL-frågor eller restfrågor för att hämta all data.
00:19:39
Som vi gör direkt i den komponenten som ska rendera och sen hela det trädet som lever på den datan.
00:19:45
Och då har man ju byggt en back-end såklart egentligen bara för att skapa ett API för läsmodeller.
00:19:53
Så vad gör man med den biten så då? Den skulle man ju kunna börja eliminera eller bygga ihop det på ett helt annat sätt.
00:19:59
Ja men exakt. Det är ju väldigt spännande. Jag tror att jag läste, om jag minns siffran rätt nu, så tror jag att de skrev i stora projekt så hade de sett en minskning på upp till 29% av javskräpbanden också.
00:20:11
Och det är en jävla bit.
00:20:14
Ja, verkligen.
00:20:15
Det är nästan en tredjedel av all JavaScript som kan försvinna för att man konverterar komponenter till serverkomponenter istället.
00:20:21
Sen tror jag att det kommer, som vi var inne på innan, att det kommer bli en komplexitet som gör det svårare att jobba med.
00:20:29
Att det blir en till sak att tänka på, att om det är en serverkomponent så måste du tänka på det här också.
00:20:35
Sen tänker jag mig att det kommer säkert typ ESLint-regler som säger bara att, ja, tänk på att om den är delad upp i .server.js då kommer den klaga på om du använder justate eller alla de här reglerna.
00:20:46
Ja, det får någon fixa.
00:20:49
Ja, jag tänker bara att någon får göra det. För det är liksom samma sak. Hur många gånger har man liksom inte råkat göra något konstigt med typ hooks och så klagar den där på, ja, du har lagt en hook efter en if, typ.
00:20:59
Och man bara, ja, just det.
00:21:01
Ja, du har missat det här i dependency-arrayen.
00:21:04
Den har man vant sig i nu. När man har suttit med Hooks i några år.
00:21:08
Så stoppar man in den i Dependency Array och sen looperar den i en helhet.
00:21:12
"Jag har byggt det här fel, men jag har inte tid, så jag lämnar ut den ur Dependency Array och lever med varningen."
00:21:17
"Islint Disable" eller React X Hosted Deps eller vad fan det heter.
00:21:22
Ja, det är lite ångestfyllt.
00:21:26
Ja, det skulle ju kunna påverka hur vi bygger webbsen.
00:21:32
Om det är tänkt att man ska bygga ihop allt i en enda, det får ju bara framtiden visa.
00:21:38
Men det är ju häftigt att det rör på sig på så här sätt.
00:21:43
Prova nya saker och flyger de inte så gör de inte.
00:21:45
Men det är, jag menar, SEO-bitarna och applikationer som är server- och klientrenderade,
00:21:52
Det skulle också kunna öppna ganska mycket nytt, häftigt antagligen.
00:21:57
Ja, definitivt. Det är en stor grej som folk har.
00:22:02
Vi måste serverendera det här på grund av det här.
00:22:07
Då är det ofta SEO som är den stora biten.
00:22:11
Men att man då skulle kunna bara serverendera de publika sidorna man har,
00:22:17
eller man slipper göra det på de interna.
00:22:19
Det är ett väldigt starkt use case.
00:22:23
Ja, om det inte börjar tolkas som att det är cloaking.
00:22:27
Google indexerar ju klientrenderad JavaScript nu för tiden.
00:22:36
Hur många andra sökmotorer optimerar vi för nu för tiden egentligen?
00:22:40
Nej, så är det verkligen.
00:22:42
Google styr våra liv.
00:22:45
En annan grej som jag kom på nu precis, men jag glömde nämna, är också att säga att en serverkomponent renderar en klientkomponent.
00:22:53
Då kommer den automatiskt codesplitta klientkomponenten.
00:22:59
Så den kommer inte laddas in, den banden kommer inte laddas in, förrän den serverkomponenten kommer från servern.
00:23:07
Oj vad jag zonade där, förlåt.
00:23:12
Ja, det är det. Som ett exempel då.
00:23:16
Om vi tar exemplet den här appen, eller demappen som den hade.
00:23:21
Då säger att vi har en, vi kan ta det exempel vi hade.
00:23:24
Vi hade listan som var serverrenderad.
00:23:28
Just det, säkerhetsresultaten.
00:23:29
Ja, exakt. Men sen varje item i listan, eller varje träff i listan, den är klientrenderad.
00:23:34
Då kommer liksom JavaScriptet för varje item,
00:23:38
Den kommer få en egen bundle som inte laddas in förrän listan har skickats från servern.
00:23:44
Så att den inkluderas inte i data som kommer från servern.
00:23:47
Men klienten vet om att "ah, här kommer en klientkomponent som inte har laddat än".
00:23:52
Och då laddar den in den bundlen så att den är automatiskt code-splittad.
00:23:55
- Ja just det, men den laddar ju inte in någonting för varje barn utan för bara den komponenten som alla barn har använt.
00:24:01
- Ja men precis.
00:24:02
Så det är också en sån här smart grej.
00:24:06
Nu vet man trädet i förväg hur det ser ut.
00:24:11
Då kan de räkna ut att den här komponenten kan vi lägga i den här banden för då kan den läsas in tillsammans med
00:24:16
när den här serverkomponenten värderas någon gång.
00:24:18
Sen var det kanske ett dåligt exempel för att den där listan visar sig förmodligen alltid i en appen.
00:24:23
Men att man går in i ett edit-läge till exempel och det är en serverkomponent.
00:24:27
Ja, men exakt.
00:24:29
Och att den har en klientkomponent som barn.
00:24:35
Så det gör jag också. Code splitting har jag suttit med så jävla många gånger.
00:24:39
Jag vill få till det lite bättre än vad det är, eller jag vill få till det överhuvudtaget.
00:24:43
Och jag vet inte, det går ju som aldrig enkelt.
00:24:46
Och så finns det en miljard olika sätt att göra det på.
00:24:48
- Och så drar man upp den här jävla bundle-analyzern och tittar på de stora, de här g-sippade, och vilka som har vilka.
00:24:57
Det där är lite som när jag sitter och tittar på performance-tabben.
00:25:00
Jag blir ju återigen, det är för mycket. Jag kan inte, det backar bara.
00:25:04
Nej Alma, det är inte en så rolig grej att hålla på med.
00:25:09
Så om det bara funkar automatiskt, gärna för mig.
00:25:12
Ja, jag kommer inte sörja.
00:25:14
Så liksom att jag inte får göra det här.
00:25:17
Sörja manuell code-splitting.
00:25:19
Får ta en gravöl för det.
00:25:23
Nej, fan.
00:25:24
Ja, men det var nog det jag hade om RSCs React Server Components.
00:25:35
Jag tror att den där förkortningen blir mer och mer populär.
00:25:38
Jag har sett den på många ställen nu när jag läser om det.
00:25:40
Fortfarande måste jag stanna upp varje gång och bara "RSC? Vad fan är det?"
00:25:45
Ja, jag klarar egentligen inga akronymer. Min hjärna bryter ihop lite.
00:25:49
Men det är lite av ett första i den här podden att någon hade med sig anteckningar.
00:25:54
Ja, men jag hade ändå en tiorad av anteckningar.
00:25:56
Det är stort känner jag.
00:25:58
Ja, det är ändå välpreppat.
00:26:00
Ja, mer strukturerade än någonsin.
00:26:04
Exakt.
00:26:06
Med det sagt så tackar vi väl för oss den här gången och så hörs vi om två veckor.
00:26:12
Ja.
00:26:13
Bye bye.
00:26:14
Tja.
00:26:15
[Musik]
00:26:22
Hej då!
Tillbaka upp