Fork me on GitHub
#clojure-norway
<
2023-11-29
>
augustl08:11:21

eller god mørning, som Animalia sitt fagblad heter

😂 1
augustl14:11:36

jo mere jeg tenker på “use server”, jo kulere synes jeg det er… Hvis man bare glemmer hvordan “JS-folk” ofte organiserer kode, og kritikken rundt å gjøre side effects fra render, så er det egentlig bare kode-organisering. Du kan fint gjøre all fetching et eget sted, ha all state på toppen, osv, i react/next. Og om du har det, er det jo ganske awesome å slippe å “manuelt” lage et API-lag, og du bare kan lage funksjoner i en egen mappe som next/vercel automatisk bygger til serverless lambdas som du kan kalle som en hvilken som helst annen async funksjon i state-håndteringa di

odinodin14:11:40

For å skjønne mer om hvorfor de kule kidsa om dagen liker Remix/Next så holder jeg på å lage en side med Remix hostet på Cloudflare, og kan til en viss grad forstå entusiasmen din. Det går fort å få opp noe "som virker", men det følger med en god del kompleksitet på lasset. Har f.eks akkurat skjært tenner når jeg skulle sette opp noe så enkelt som sesjonshåndtering med Cookies i Remix. Det funka ikke på Cloudflare fordi deres runtime ikke var helt node-kompatibelt. Så da må man inn og skrive sin egen sesjonshåndterer i Remix

odinodin14:11:56

Det minner meg veldig om Rails, bare i frontend

odinodin14:11:09

litt mindfuck i begynnelsen med serverkode og frontendkode i samme fila

cjohansen14:11:10

Skulle akkurat til å nevne Rails 😅

cjohansen14:11:34

Jeg har jobbet nok med rammeverk til å vite det jeg trenger å vite om "use server", og det skaper ingen entusiasme for meg.

odinodin14:11:45

men for all del, man kan være veldig produktiv så lenge man tegner innenfor boksa

cjohansen14:11:55

Det eneste som går fortere er som @U0PS4MS80 sier å komme igang. Det er rimelig uinteressant å optimalisere for ass.

odinodin14:11:27

f.eks litt digg å lage en ny route ved å bare putte ei fil som heter minNyeRoute.ts i routes-mappa

odinodin14:11:38

men det er ikke helt gratis 😄

cjohansen14:11:02

For all del. Men man kan lage seg sånne conveniences selv også

augustl14:11:04

kunne vært interessant å undersøke hvordan man kunne fått til noe lignende for clj(s) i biblioteks-form. I praksis ender man jo opp med helt “plain” js-filer som har funksjoner som bruker env vars, tar imot js-data og returnerer js-data. Så slipper du å navngi paths i API-et, deployment av front-end følger deployment av back-end 1:1, osv osv

odinodin14:11:33

@U0MKRS1FX sånn, BFF-rammeverk for clojure?

odinodin14:11:27

jeg vil ikke avfeie det helt, til noen ting så kan det passe bra

augustl14:11:15

hmm ja kanskje, på sett og vis (sier jeg, etter å ha skumlest om BFF). Om alt du har er én klient og én backend så har det vel ikke så mye å si hva man kaller patternet, siden det er 1:1 uansett i det tilfellet

odinodin14:11:49

@U0MKRS1FX kanskje det jeg tenkte mest på var at det APIet du får autogenerert er spesialsydd for frontenden din (typisk)

augustl14:11:51

det fine er jo at selve implementasjonen som nevnt ender opp som helt plain funksjoner som bruker env vars. Så det er nokså portabelt om man skulle ønske å deploye det på andre vis senere

augustl14:11:42

ja riktig, i den grad man kan kalle det autogenerert - du skriver jo koden selv, så det “eneste” man slipper å gjøre er å manuelt pakke det inn i URL-routes (byggesteget gjør det for deg) og deploye det separat

👍 1
augustl14:11:43

har eksperimentert litt med next + vercel sin “use server”, og namespacene med “use server” ender opp med å vite null og niks om next + vercel

augustl14:11:41

kan man snu på det? Hva er verdien av å skille på deployment av frontend og backend når koden i praksis er 1:1?

augustl14:11:51

i mitt tilfelle er “use server” noe jeg putter i toppen av separate backend-filer, ikke noe jeg putter inni handler-kode embedda i rendringen. Så for meg oppleves hovedforskjellen som at jeg kan kalle const res = await myBackendFunction() direkte der jeg gjør I/O, i stedet for å kalle const res = await fetch("/my_backend_function") og deploye den separat

augustl14:11:29

siter med å se ulempen - helt åpen for at det er jeg som bare er blind for et eller annet her 😄

cjohansen14:11:00

Byggesystemer og rammeverk har som kjent ingen kostnad 😅

augustl14:11:38

hmm det er sant, mindsettet mitt her er vel at jeg allerede bruker next + vercel

augustl14:11:59

(not sure if hot take)