Norsk

Lær hvordan du implementerer React Progressiv Forbedring for å skape nettsider som er tilgjengelige, ytelsessterke og robuste, selv med JavaScript deaktivert eller under innlasting.

React Progressiv Forbedring: Slik bygger du JavaScript-valgfrie komponenter

I dagens landskap for webutvikling er JavaScript-rammeverk som React allestedsnærværende. Selv om de tilbyr kraftige verktøy for å skape dynamiske og interaktive brukergrensesnitt, kan det å stole utelukkende på JavaScript føre til problemer med tilgjengelighet, ytelse og SEO. Det er her Progressiv Forbedring (PF) kommer inn. Progressiv Forbedring er en strategi for webutvikling som prioriterer at kjernefunksjonalitet og innhold på nettsiden er tilgjengelig for alle brukere, uavhengig av nettleserens kapasitet eller JavaScript-tilgjengelighet. React Progressiv Forbedring fokuserer på å bygge komponenter som fungerer selv uten JavaScript, og gir en grunnleggende opplevelse som deretter forbedres med JavaScript for rikere interaktivitet.

Hva er Progressiv Forbedring?

Progressiv Forbedring er ikke et nytt konsept. Det er en filosofi som fremmer bygging av nettsider i lag, med et solid fundament av HTML og CSS. Dette fundamentet sikrer at innholdet er tilgjengelig for alle, inkludert brukere med nedsatt funksjonsevne, de med lav båndbredde, eller de med deaktivert JavaScript. JavaScript legges deretter til som en forbedring for å gi en rikere og mer interaktiv opplevelse. Tenk på det som å bygge et hus: du starter med den grunnleggende strukturen og legger deretter til de fancy funksjonene.

Hovedprinsipper for Progressiv Forbedring:

Hvorfor Progressiv Forbedring er viktig i React

React er som standard et JavaScript-tungt rammeverk. Når en React-applikasjon rendres i nettleseren, krever det vanligvis at en betydelig mengde JavaScript lastes ned, tolkes og kjøres. Dette kan føre til flere problemer:

Implementering av Progressiv Forbedring i React løser disse utfordringene ved å tilby en grunnleggende opplevelse som er funksjonell selv uten JavaScript. Dette forbedrer ikke bare tilgjengelighet og ytelse, men styrker også SEO ved å sikre at søkemotorer enkelt kan crawle og indeksere innholdet.

Teknikker for React Progressiv Forbedring

Flere teknikker kan brukes for å implementere Progressiv Forbedring i React:

1. Server-Side Rendering (SSR)

Server-Side Rendering (SSR) er en teknikk der React-komponenter rendres på serveren, og den resulterende HTML-koden sendes til klienten. Dette lar nettleseren vise innholdet umiddelbart, selv før JavaScript er lastet ned og kjørt. SSR gir flere fordeler:

Rammeverk som Next.js og Remix gjør implementering av SSR i React relativt enkelt. De gir innebygd støtte for server-side rendering, ruting og datahenting.

Eksempel med Next.js:

Next.js håndterer automatisk SSR for sider i `pages`-mappen. Her er et enkelt eksempel:


// pages/index.js
function HomePage() {
  return 

Velkommen til min nettside!

; } export default HomePage;

Når en bruker besøker hjemmesiden, vil Next.js rendre `HomePage`-komponenten på serveren og sende den resulterende HTML-koden til nettleseren.

2. Static Site Generation (SSG)

Static Site Generation (SSG) er en teknikk der React-komponenter rendres ved byggetid, og de resulterende HTML-filene serveres direkte til klienten. Dette er enda raskere enn SSR fordi HTML-koden er forhåndsgenerert og ikke krever noen server-side-prosessering for hver forespørsel.

Rammeverk som Gatsby og Next.js støtter også SSG. De lar deg generere statiske HTML-filer fra React-komponentene dine ved byggetid.

Eksempel med Next.js:

For å bruke SSG i Next.js, kan du bruke `getStaticProps`-funksjonen til å hente data og sende det til komponenten din som props.


// pages/blog/[id].js

export async function getStaticProps({ params }) {
  const postId = params.id;
  // Hent data for innlegget fra et API eller en database
  const post = { id: postId, title: `Innlegg ${postId}`, content: `Innholdet i innlegg ${postId}` };

  return {
    props: {
      post,
    },
  };
}

export async function getStaticPaths() {
  // Definer de mulige verdiene for `id`-parameteren
  const paths = [
    { params: { id: '1' } },
    { params: { id: '2' } },
    { params: { id: '3' } },
  ];

  return {
    paths,
    fallback: false, // Sett til true hvis du vil generere sider ved behov
  };
}

function BlogPost({ post }) {
  return (
    

{post.title}

{post.content}

); } export default BlogPost;

Next.js vil generere statiske HTML-filer for hvert innlegg ved byggetid.

3. Elegant Nedbrytning med `

`


Dette innholdet vises hvis JavaScript er aktivert.

Du kan bruke `

4. Betinget Rendering

Betinget rendering lar deg rendre forskjellige komponenter eller innhold basert på om JavaScript er aktivert. Du kan bruke dette til å progressivt forbedre brukergrensesnittet med JavaScript-funksjoner, samtidig som du gir en grunnleggende opplevelse uten JavaScript.


import { useState, useEffect } from 'react';

function MyComponent() {
  const [isJavaScriptEnabled, setIsJavaScriptEnabled] = useState(true);

  useEffect(() => {
    // Sjekk om JavaScript er aktivert. Dette er et forenklet eksempel.
    // I et reelt scenario vil du kanskje bruke en mer robust metode.
    setIsJavaScriptEnabled(typeof window !== 'undefined');
  }, []);

  return (
    
{isJavaScriptEnabled ? (

Dette innholdet rendres med JavaScript.

) : (

Dette innholdet rendres uten JavaScript.

)}
); } export default MyComponent;

Dette eksempelet bruker `useState`- og `useEffect`-hooks for å sjekke om JavaScript er aktivert i nettleseren. Basert på dette, rendrer den forskjellig innhold.

5. Bruk av semantisk HTML

Bruk av semantiske HTML-elementer er avgjørende for både tilgjengelighet og Progressiv Forbedring. Semantiske HTML-elementer gir mening og struktur til innholdet, noe som gjør det lettere for hjelpemidler og søkemotor-crawlere å forstå. For eksempel, å bruke `

`, `