Suomi

Opi toteuttamaan Reactin progressiivinen parantaminen luodaksesi verkkosivustoja, jotka ovat saavutettavia, suorituskykyisiä ja kestäviä, jopa ilman JavaScriptiä tai latauksen aikana.

React ja progressiivinen parantaminen: JavaScriptistä riippumattomien komponenttien rakentaminen

Nykypäivän verkkokehityksessä JavaScript-kehykset, kuten React, ovat kaikkialla. Vaikka ne tarjoavat tehokkaita työkaluja dynaamisten ja interaktiivisten käyttöliittymien luomiseen, pelkästään JavaScriptiin luottaminen voi johtaa ongelmiin saavutettavuuden, suorituskyvyn ja hakukoneoptimoinnin (SEO) kanssa. Tässä kohtaa progressiivinen parantaminen (Progressive Enhancement, PE) astuu kuvaan. Progressiivinen parantaminen on verkkokehitysstrategia, joka priorisoi verkkosivuston ydintoiminnallisuuksien ja sisällön saatavuuden kaikille käyttäjille, riippumatta heidän selaimensa ominaisuuksista tai JavaScriptin saatavuudesta. Reactin progressiivinen parantaminen keskittyy rakentamaan komponentteja, jotka toimivat jopa ilman JavaScriptiä, tarjoten peruskokemuksen, jota sitten parannetaan JavaScriptillä rikkaamman interaktiivisuuden saavuttamiseksi.

Mitä on progressiivinen parantaminen?

Progressiivinen parantaminen ei ole uusi käsite. Se on filosofia, joka puoltaa verkkosivustojen rakentamista kerroksittain, aloittaen vankasta HTML- ja CSS-perustasta. Tämä perusta varmistaa, että sisältö on kaikkien saatavilla, mukaan lukien vammaiset käyttäjät, hitailla yhteyksillä olevat tai ne, joilla JavaScript on pois päältä. JavaScript lisätään sitten parannuksena tarjoamaan rikkaamman ja interaktiivisemman kokemuksen. Ajattele sitä talon rakentamisena: aloitat perusrakenteesta ja lisäät sitten hienot ominaisuudet.

Progressiivisen parantamisen avainperiaatteet:

Miksi progressiivinen parantaminen on tärkeää Reactissa

React on oletusarvoisesti JavaScript-painotteinen kehys. Kun React-sovellus renderöidään selaimessa, se vaatii tyypillisesti merkittävän määrän JavaScriptiä ladattavaksi, jäsennettäväksi ja suoritettavaksi. Tämä voi johtaa useisiin ongelmiin:

Progressiivisen parantamisen toteuttaminen Reactissa vastaa näihin haasteisiin tarjoamalla peruskokemuksen, joka on toimiva jopa ilman JavaScriptiä. Tämä ei ainoastaan paranna saavutettavuutta ja suorituskykyä, vaan myös tehostaa SEO:ta varmistamalla, että hakukoneet voivat helposti selata ja indeksoida sisällön.

Tekniikoita Reactin progressiiviseen parantamiseen

Reactissa voidaan käyttää useita tekniikoita progressiivisen parantamisen toteuttamiseen:

1. Palvelinpuolen renderöinti (SSR)

Palvelinpuolen renderöinti (Server-Side Rendering, SSR) on tekniikka, jossa React-komponentit renderöidään palvelimella ja tuloksena oleva HTML lähetetään asiakkaalle. Tämä antaa selaimen näyttää sisällön välittömästi, jo ennen kuin JavaScript on ladattu ja suoritettu. SSR tarjoaa useita etuja:

Kehykset kuten Next.js ja Remix tekevät SSR:n toteuttamisesta Reactissa suhteellisen yksinkertaista. Ne tarjoavat sisäänrakennetun tuen palvelinpuolen renderöinnille, reititykselle ja datan noutamiselle.

Esimerkki Next.js:n avulla:

Next.js hoitaa automaattisesti SSR:n `pages`-hakemistossa oleville sivuille. Tässä on yksinkertainen esimerkki:


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

Tervetuloa verkkosivustolleni!

; } export default HomePage;

Kun käyttäjä vierailee etusivulla, Next.js renderöi `HomePage`-komponentin palvelimella ja lähettää tuloksena olevan HTML:n selaimeen.

2. Staattinen sivustogenerointi (SSG)

Staattinen sivustogenerointi (Static Site Generation, SSG) on tekniikka, jossa React-komponentit renderöidään käännösvaiheessa ja tuloksena olevat HTML-tiedostot tarjoillaan suoraan asiakkaalle. Tämä on jopa nopeampaa kuin SSR, koska HTML on valmiiksi generoitu eikä vaadi palvelinpuolen käsittelyä jokaisella pyynnöllä.

Kehykset kuten Gatsby ja Next.js tukevat myös SSG:tä. Ne mahdollistavat staattisten HTML-tiedostojen generoinnin React-komponenteistasi käännösvaiheessa.

Esimerkki Next.js:n avulla:

Käyttääksesi SSG:tä Next.js:ssä, voit käyttää `getStaticProps`-funktiota datan noutamiseen ja sen välittämiseen komponentillesi propseina.


// pages/blog/[id].js

export async function getStaticProps({ params }) {
  const postId = params.id;
  // Hae julkaisun tiedot API:sta tai tietokannasta
  const post = { id: postId, title: `Julkaisu ${postId}`, content: `Julkaisun ${postId} sisältö` };

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

export async function getStaticPaths() {
  // Määritä mahdolliset arvot 'id'-parametrille
  const paths = [
    { params: { id: '1' } },
    { params: { id: '2' } },
    { params: { id: '3' } },
  ];

  return {
    paths,
    fallback: false, // Aseta arvoksi true, jos haluat generoida sivuja tarvittaessa
  };
}

function BlogPost({ post }) {
  return (
    

{post.title}

{post.content}

); } export default BlogPost;

Next.js generoi staattiset HTML-tiedostot jokaiselle julkaisulle käännösvaiheessa.

3. Hallittu heikentyminen `

`


Tämä sisältö näytetään, jos JavaScript on käytössä.

Voit käyttää `

4. Ehdollinen renderöinti

Ehdollinen renderöinti mahdollistaa erilaisten komponenttien tai sisällön renderöinnin sen perusteella, onko JavaScript käytössä. Voit käyttää tätä parantaaksesi progressiivisesti käyttöliittymää JavaScript-ominaisuuksilla, samalla kun tarjoat peruskokemuksen ilman JavaScriptiä.


import { useState, useEffect } from 'react';

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

  useEffect(() => {
    // Tarkista, onko JavaScript käytössä. Tämä on yksinkertaistettu esimerkki.
    // Todellisessa tilanteessa kannattaa käyttää luotettavampaa menetelmää.
    setIsJavaScriptEnabled(typeof window !== 'undefined');
  }, []);

  return (
    
{isJavaScriptEnabled ? (

Tämä sisältö renderöidään JavaScriptillä.

) : (

Tämä sisältö renderöidään ilman JavaScriptiä.

)}
); } export default MyComponent;

Tämä esimerkki käyttää `useState`- ja `useEffect`-hookeja tarkistaakseen, onko JavaScript käytössä selaimessa. Tämän perusteella se renderöi eri sisältöä.

5. Semanttisen HTML:n käyttö

Semanttisten HTML-elementtien käyttö on ratkaisevan tärkeää sekä saavutettavuuden että progressiivisen parantamisen kannalta. Semanttiset HTML-elementit antavat sisällölle merkityksen ja rakenteen, mikä helpottaa avustavien teknologioiden ja hakukonerobottien ymmärtämistä. Esimerkiksi `

`, `