Hver gang så ofte begynder en teknisk beslutning, der engang følte sig rigtigt, at vise sine grænser – som at indse, hvor ineffektiv en skruetrækker er efter at have brugt en power drill. Det har været tilfældet med HackerNoon's brug af Styled Components. I årevis har det tjent os godt – tilbyder omfattende stilarter, dynamisk theming og fuld kontrol inden for vores React-komponenter.Stylede komponenterTailwind og CSS ændring var overstået.
Dette indlæg er en sammenfatning af vores skift fra Styled Components til Tailwind CSS, hvorfor vi gjorde bevægelsen, hvordan jeg nærmede mig overgangen, og hvordan processen har set ud indtil nu. Hvis du arbejder med legacy stilarter eller overvejer Tailwind til dine egne projekter, håber dette giver dig noget nyttigt (eller i det mindste relateret) at gå væk med.
Hvorfor HackerNoon oprindeligt brugte stylede komponenter
Jeg var ikke en del af teamet, da Styled Components først blev valgt til at håndtere vores CSS, men på det tidspunkt var Tailwind CSS ikke engang blevet frigivet, og Styled Components gjorde en masse mening for HackerNoon's front-end arkitektur.
Tailwind CSS var ikke engang blevet frigivet
Det tillod udviklere at skrive CSS direkte i JavaScript, hvilket gør komponenterne fuldstændig selvstændige. Denne tilgang føltes meget "React-native" i naturen -encapsulated, genanvendelig, og på det tidspunkt mente at være lettere at vedligeholde på tværs af en voksende codebase og team. De dynamiske styling evner, indbygget tema support, og evnen til at passere props direkte i stilarter fungerede især godt for det brede udvalg af sider og layouts, vi byggede.
I lang tid, Styled Components tjente HackerNoon godt.indkapslet, genanvendelig, og på det tidspunkt mente at være lettere at vedligeholdeStyled Components tjente HackerNoon godtHvad fik os til at overveje at skifte til Tailwind?
Med tiden voksede vores kodebase – og det samme gjorde kompleksiteten af styles.
Styled Components gav os fleksibilitet, men det kom til en pris: større bundlestørrelser, runtime performance hits, og en klutteret komponentstruktur fyldt med stadig længere stilede blokke.større bundle størrelserruntime præstations hitsklutteret komponentstruktur
Vi bemærkede også, at mange af vores stilarter blev gentaget på tværs af komponenter. Det var da Tailwind CSS begyndte at gøre en masse mening.Tailwind og CSS
Men lad os være virkelige: For et small developer team som HackerNoon's føltes ideen om at refaktorisere en massiv kodebase linje efter linje som et stort initiativ.small dev team som HackerNoon'slinje efter linje
Hvordan jeg lavede switchen
Den hårdeste del af denne switch? Setup.
Sæt op.
Installationen af Tailwind var enkel, men når den var aktiv, begyndte Tailwinds globale stilarter – takket være Preflight – at kollidere med vores eksisterende komponenter.
En livredder her var at indstille preflight: false
i tailwind.config.js
fil. Den bevægelse deaktiverede de fleste af Tailwinds base resets, som bragte nogle ordre tilbage.preflight: false
tailwind.config.js
Deaktiveret de fleste af Tailwinds base resets
Derfra måtte jeg etablere nye konventioner - hvordan vi skulle håndtere globale stilarter, genbruge klasser og bygge tema-bevidste komponenter med Tailwind.sæt nye konventioner
Og her er den del, jeg stadig er forbløffet over: AI gjorde denne proces faktisk behagelig.
AI gjorde denne proces faktisk behagelig.
At reflektere tusindvis af linjer af kode solo ville have været vanvid. Men jeg brugte ChatGPT til at konvertere vores stylede komponenter til Tailwind én ad gangen. For enkle komponenter – layouts, spacing, struktur – det var en brise.
Nu, lad mig være ærlig: AI fik ikke alt rigtigt. Mere komplekse, tematiske komponenter krævede stadig manuel kodning og masser af timer. Men at have et solidt grundlag til at starte fra gjorde tingene så meget lettere.Nu, lad mig være ærlig:manual kodning og masser af timerUtilitetsklasse mindset
Hvad migrationen ser ud så langt
Jeg er glad for at sige, at Tailwind er nu live på HackerNoon! 🎉
Tilbæk er nu live på HackerNoon!
As of now, the HackerNoon Homepage is fully converted to Tailwind CSS, with Styled Components completely removed. Most of the other pages still rely on Styled Components, and they’ll be converted gradually—one component, one page at a time.
HackerNoon Homepage is fully convertedHackerNoon Homepage is fully converteden komponent, én side ad gangen
Denne langsommere tilgang har faktisk været en velsignelse. Refactoring hver komponent gav mig mulighed for at revisit og forbedre designet og strukturen af vores sider. Sammen med Tailwind konvertering, introducerede vi en mere moderne brugergrænseflade, bedre layout brug, nye komponenter og endda en brugerdefineret tema picker, der sætter vores gamle tema system til skamme.
revision og forbedringmere moderne brugergrænsefladeCustom-built theme picker Tilbehør
Efter at have arbejdet hos HackerNoon i over 4 år, føler jeg mig reignited dykker ind i vores codebase igen. Tailwind har gjort byggeriet sjovt igen. Det er rent, konsekvent og kraftfuldt – og jeg er spændt på at fortsætte med at skubbe konverteringen fremad. Hvem ved? Måske snart vil vi slette styled-components
fra vores package.json
for godt. 😉
styled-components
package.json
Final Tailwinding Tanker
Overgangen til Tailwind CSS handlede ikke kun om at udskifte et stylingbibliotek – det handlede om at modernisere vores frontend-arbejdsproces, omfavne konsistens og forenkle udviklingen.Mens Styled Components hjalp med at forme HackerNoon's grænseflade i en kritisk vækstfase, giver Tailwind os den fleksibilitet, hastighed og vedligeholdelighed, vi har brug for, mens vi fortsætter med at skalere.
Fleksibilitet, hastighed og vedligeholdelighed
Det er stadig et arbejde i gang – vores app har stadig masser af Styled Components – men at se Tailwind live på vores hjemmeside og i nyligt refactorede komponenter har været utroligt givende.
HackerNoon udvikler sig, og vores stilarter udvikler sig med det.