window.pipedriveLeadboosterConfig = { basis: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versie: 2, } ;(functie () { var w = venster als (w.LeadBooster) { console.warn('LeadBooster bestaat al') } anders { w.LeadBooster = { q: [], on: functie (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: functie (n) { this.q.push({ t: 't', n: n }) }, } } })() Waarom zou je SCSS gebruiken in plaats van gestileerde componenten? - The Codest
The Codest
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Industrie
    • Fintech & Bankieren
    • E-commerce
    • Adtech
    • Gezondheidstechnologie
    • Productie
    • Logistiek
    • Automotive
    • IOT
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
Pijl terug KEREN TERUG
2021-10-05
Software Ontwikkeling

Waarom zou je SCSS gebruiken in plaats van gestileerde componenten?

The Codest

Jacek Ludzik

Product Ontwerper

De afgelopen maanden heb ik gewerkt aan een project voor een van onze klanten. Toen ik helemaal aan het begin stond, moest ik een keuze maken uit de bibliotheek voor styling.

Na het vergelijken van populaire oplossingen zoals gewone CSS, Emotion, SCSS en Gestileerde onderdelenUiteindelijk selecteerde ik de laatste. Alles leek in orde te zijn. De bibliotheek is tegenwoordig erg populair, wat betekent dat
er is al een grote community, dus als ik problemen tegenkom, vind ik waarschijnlijk wel ergens een oplossing op Stack Overflow of GitHub. Daarnaast, Gestileerde onderdelen hebben enkele optimalisatiefuncties, wat betekent dat ze alleen renderen wanneer dat nodig is. De project was naar verwachting gebouwd met React en Typescript. Deze bibliotheek heeft geweldige ondersteuning voor beide technologieën. Klinkt geweldig, toch?

Ik begon toen met coderen. Na een maand, toen de app gegroeid was, werd de frontend team en ik gericht op het leveren van functies, ontdekten we dat de verbazingwekkende Gestileerde onderdelen De bibliotheek had een eigen doel en ik zal je vertellen waarom.

Allereerst de naamgevingsconventie. Om onderscheid te maken tussen Gestileerde onderdelen van React componenten, moest ik de Gestileerd voorvoegsel dat afnam code leesbaarheid. Dan (wat misschien vreemd is), ondersteuning voor Typescript. Gestileerde onderdelenzijn, zoals je misschien weet, gebaseerd op de CSS-in-JS aanpak. Dit betekent dat je een willekeurige prop kunt doorgeven en de stijl van de invoer kunt wijzigen op basis van deze prop en persoonlijk vind ik dit een geweldige functie. In Typescript moet je ook het type van deze eigenschap implementeren, waardoor de code langer wordt. Gestileerd onderdeel. "Maar het zou 5 seconden langer duren, dus wat is je probleem" - zou je kunnen zeggen. Je hebt gelijk, hoewel als de app snel opschaalt en het aantal componenten is
toenemend, kunnen deze 5 seconden gemakkelijk met honderden vermenigvuldigd worden. Een ander probleem is de plaatsing van de Gestileerde onderdelen.

Sommige JS-ontwikkelaars plaatsen ze in hetzelfde bestand met de component waartoe ze behoren en anderen maken er aparte bestanden voor. Beide benaderingen zijn goed om vele redenen. Het hangt vooral af van de complexiteit van het component. Het volgen van een van deze technieken kan de cohesie behouden, maar ze samenvoegen geeft precies het tegenovergestelde. We zijn afgestapt van de CSS-in-JS aanpak en gemigreerd naar SCSS. Het was niet gemakkelijk en snel, maar met een beetje hulp hebben we het gehaald. We begonnen met het stylen van html-tags in de BEM-methodologie en zetten de stijlen natuurlijk in aparte bestanden, één per component. Ik zei dat het doorgeven van JS props aan Gestileerde onderdelen is een geweldige functie, maar in SCSS het is onmogelijk. Ik denk dat we het er ook allemaal over eens zijn dat de syntaxis die React wil gebruiken om voorwaardelijke klassen te coderen verschrikkelijk is.

code van react classnames

Nou, er is een heel interessante oplossing. Als je de BEM-methodologie verbindt met de clsx bibliotheek, krijg je zoiets als dit (grote shoutout naar mijn vriend Przemek Adamczyk voor het laten zien van deze bibliotheek)

clsx-code

Ziet er veel netter uit, vind je niet?

Het beste is dat je alleen de conditievariabele op componentniveau hoeft te typen en
niet op het niveau van styling. Het bespaart echt tijd. Helaas heeft zo'n oplossing ook nadelen.
SCSS is eenvoudig en vriendelijk, maar wees voorzichtig als je het gebruikt met Next.js. Dit framework doet niet
toestaan om stijlbestanden rechtstreeks in het componentbestand te importeren (alleen CSS-modules).

Als je één bestand per component wilt, moet je het volgende maken index.scss met al uw SCSS bestanden en
importeer het in de _app.tsx bestand. Het enige probleem is dat je handmatig elk SCSS bestand dat je hebt gemaakt. In React bestaat dit probleem echter niet en kun je het volgende importeren SCSS bestanden waar je maar wilt. Begrijp me niet verkeerd. Gestileerde onderdelen zijn echt goed. Zoals ik al eerder zei, zijn het doorgeven van JS-variabelen en het globale thema geweldige functies. Als je een grote app bouwt waarbij optimalisatie cruciaal is, zal deze bibliotheek waarschijnlijk aan je behoeften voldoen. In ons geval is migratie naar SCSS de jackpot winnen.

Samenvattend

Concluderend, hoewel er geldige argumenten zijn voor beide SCSS en gestileerde componenten in webontwikkeling De uiteindelijke beslissing hangt af van verschillende factoren. SCSS biedt een meer vertrouwde syntaxis voor ervaren ontwikkelaars in traditionele CSS en biedt een naadloze integratie met bestaande codebases en componentbibliotheken .

Aan de andere kant, Gestileerde onderdelen bieden verbeterde Ervaring als ontwikkelaar met de mogelijkheid om stijlen in te kapselen in componenten en het stylingproces te vereenvoudigen. Het bevordert ook modulariteit en herbruikbaarheid van code, waardoor front-end engineers efficiënt de onderdelenmap en een consistente UI maken voor alle webapp . Gezien het belang van gebruikersgegevens veiligheid en prestaties, is het cruciaal om de invloed van beide benaderingen op de uiteindelijke bundelgrootte en laadtijden te beoordelen. Uiteindelijk is de keuze tussen SCSS en gestileerde componenten moet gebaseerd zijn op de specifieke behoeften van het project, de vaardigheden van de ontwikkelingsteam en de algemene doelen van de webapplicatie . Het is raadzaam voor ontwikkelaars om alle factoren te evalueren, op de hoogte te blijven via blogberichten en discussies in de sector en een weloverwogen beslissing nemen die aansluit bij hun projectvereisten en de algehele kwaliteit van het project verbetert. front-end ontwikkelingsproces .

Verwante artikelen

Software Ontwikkeling

De vergelijking van de kampioenen: Angular vs Vue

Op dit moment zijn er een paar frontend frameworks die veel gebruikt worden en constant doorontwikkeld worden door hun makers, elk een beetje anders dan de andere. En toch kunnen ze iets gemeen hebben. Hier...

Oliwia Oremek

Abonneer je op onze kennisbank en blijf op de hoogte van de expertise uit de IT-sector.

    Over ons

    The Codest - Internationaal softwareontwikkelingsbedrijf met technische hubs in Polen.

    Verenigd Koninkrijk - Hoofdkantoor

    • Kantoor 303B, 182-184 High Street North E6 2JA
      Londen, Engeland

    Polen - Lokale technologieknooppunten

    • Fabryczna kantorenpark, Aleja
      Pokoju 18, 31-564 Krakau
    • Hersenambassade, Konstruktorska
      11, 02-673 Warschau, Polen

      The Codest

    • Home
    • Over ons
    • Diensten
    • Case Studies
    • Weten hoe
    • Carrière
    • Woordenboek

      Diensten

    • Het advies
    • Software Ontwikkeling
    • Backend ontwikkeling
    • Frontend ontwikkeling
    • Staff Augmentation
    • Backend ontwikkelaars
    • Cloud Ingenieurs
    • Gegevensingenieurs
    • Andere
    • QA ingenieurs

      Bronnen

    • Feiten en fabels over samenwerken met een externe partner voor softwareontwikkeling
    • Van de VS naar Europa: Waarom Amerikaanse startups besluiten naar Europa te verhuizen
    • Tech Offshore Ontwikkelingshubs Vergelijking: Tech Offshore Europa (Polen), ASEAN (Filippijnen), Eurazië (Turkije)
    • Wat zijn de grootste uitdagingen voor CTO's en CIO's?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Gebruiksvoorwaarden website

    Copyright © 2025 door The Codest. Alle rechten voorbehouden.

    nl_NLDutch
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish etEstonian elGreek nl_NLDutch