Lietuvių

Sužinokite, kaip įdiegti React Progresyvųjį Tobulinimą, kad sukurtumėte prieinamas, našias ir patikimas svetaines, net kai JavaScript yra išjungtas.

React Progresyvusis Tobulinimas: JavaScript neprivalomų komponentų kūrimas

Šiuolaikiniame žiniatinklio kūrimo pasaulyje JavaScript karkasai, tokie kaip React, yra visur. Nors jie siūlo galingus įrankius dinamiškoms ir interaktyvioms vartotojo sąsajoms kurti, pasikliavimas vien tik JavaScript gali sukelti problemų dėl prieinamumo, našumo ir SEO. Čia į pagalbą ateina Progresyvusis Tobulinimas (PE). Progresyvusis Tobulinimas yra žiniatinklio kūrimo strategija, kuri teikia pirmenybę pagrindinėms svetainės funkcijoms ir turiniui, kad jie būtų prieinami visiems vartotojams, nepriklausomai nuo jų naršyklės galimybių ar JavaScript prieinamumo. React Progresyvusis Tobulinimas orientuojasi į komponentų kūrimą, kurie veikia net ir be JavaScript, suteikiant bazinę patirtį, kuri vėliau yra patobulinama JavaScript pagalba, siekiant didesnio interaktyvumo.

Kas yra Progresyvusis Tobulinimas?

Progresyvusis Tobulinimas nėra nauja koncepcija. Tai filosofija, kuri skatina kurti svetaines sluoksniais, pradedant nuo tvirto HTML ir CSS pagrindo. Šis pagrindas užtikrina, kad turinys būtų prieinamas visiems, įskaitant neįgaliuosius, vartotojus su lėtu interneto ryšiu ar tuos, kurių JavaScript yra išjungtas. JavaScript pridedamas kaip patobulinimas, suteikiantis turtingesnę ir interaktyvesnę patirtį. Galvokite apie tai kaip apie namo statybą: pradedate nuo pagrindinės struktūros, o tada pridedate prabangias detales.

Pagrindiniai Progresyviojo Tobulinimo Principai:

Kodėl Progresyvusis Tobulinimas Svarbus React Aplinkoje

React, pagal numatytuosius nustatymus, yra JavaScript reikalaujantis karkasas. Kai React programa yra atvaizduojama naršyklėje, paprastai reikia atsisiųsti, išanalizuoti ir įvykdyti didelį kiekį JavaScript kodo. Tai gali sukelti keletą problemų:

Progresyviojo Tobulinimo įgyvendinimas React aplinkoje sprendžia šiuos iššūkius, suteikdamas bazinę patirtį, kuri yra funkcionali net ir be JavaScript. Tai ne tik pagerina prieinamumą ir našumą, bet ir stiprina SEO, užtikrinant, kad paieškos sistemos galėtų lengvai nuskaityti ir indeksuoti turinį.

React Progresyviojo Tobulinimo Technikos

React aplinkoje Progresyviajam Tobulinimui įgyvendinti galima naudoti kelias technikas:

1. Serverio pusės atvaizdavimas (SSR)

Serverio pusės atvaizdavimas (Server-Side Rendering, SSR) yra technika, kai React komponentai yra atvaizduojami serveryje, o gautas HTML siunčiamas klientui. Tai leidžia naršyklei nedelsiant parodyti turinį, dar prieš atsisiunčiant ir įvykdant JavaScript. SSR suteikia keletą privalumų:

Karkasai, tokie kaip Next.js ir Remix, SSR įgyvendinimą React aplinkoje padaro gana paprastą. Jie suteikia integruotą palaikymą serverio pusės atvaizdavimui, maršrutizavimui ir duomenų gavimui.

Pavyzdys naudojant Next.js:

Next.js automatiškai tvarko SSR puslapiams, esantiems `pages` kataloge. Štai paprastas pavyzdys:


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

Sveiki atvykę į mano svetainę!

; } export default HomePage;

Kai vartotojas apsilanko pagrindiniame puslapyje, Next.js atvaizduos `HomePage` komponentą serveryje ir išsiųs gautą HTML naršyklei.

2. Statinės svetainės generavimas (SSG)

Statinės svetainės generavimas (Static Site Generation, SSG) yra technika, kai React komponentai atvaizduojami kūrimo metu (build time), o gauti HTML failai yra tiesiogiai pateikiami klientui. Tai yra dar greičiau nei SSR, nes HTML yra iš anksto sugeneruotas ir nereikalauja jokio serverio pusės apdorojimo kiekvienai užklausai.

Karkasai, tokie kaip Gatsby ir Next.js, taip pat palaiko SSG. Jie leidžia generuoti statinius HTML failus iš jūsų React komponentų kūrimo metu.

Pavyzdys naudojant Next.js:

Norėdami naudoti SSG Next.js, galite pasitelkti `getStaticProps` funkciją, kad gautumėte duomenis ir perduotumėte juos savo komponentui kaip savybes (props).


// pages/blog/[id].js

export async function getStaticProps({ params }) {
  const postId = params.id;
  // Gaukite įrašo duomenis iš API ar duomenų bazės
  const post = { id: postId, title: `Įrašas ${postId}`, content: `Įrašo ${postId} turinys` };

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

export async function getStaticPaths() {
  // Apibrėžkite galimas `id` parametro vertes
  const paths = [
    { params: { id: '1' } },
    { params: { id: '2' } },
    { params: { id: '3' } },
  ];

  return {
    paths,
    fallback: false, // Nustatykite į true, jei norite generuoti puslapius pagal pareikalavimą
  };
}

function BlogPost({ post }) {
  return (
    

{post.title}

{post.content}

); } export default BlogPost;

Next.js sugeneruos statinius HTML failus kiekvienam įrašui kūrimo metu.

3. Sklandus funkcionalumo mažinimas su `

`


Šis turinys bus rodomas, jei JavaScript įjungtas.

Galite naudoti `

4. Sąlyginis atvaizdavimas

Sąlyginis atvaizdavimas leidžia atvaizduoti skirtingus komponentus ar turinį priklausomai nuo to, ar JavaScript yra įjungtas. Galite tai naudoti, norėdami laipsniškai tobulinti vartotojo sąsają su JavaScript funkcijomis, tuo pačiu suteikiant bazinę patirtį be JavaScript.


import { useState, useEffect } from 'react';

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

  useEffect(() => {
    // Patikrinkite, ar JavaScript įjungtas. Tai supaprastintas pavyzdys.
    // Realiame scenarijuje galbūt norėtumėte naudoti patikimesnį metodą.
    setIsJavaScriptEnabled(typeof window !== 'undefined');
  }, []);

  return (
    
{isJavaScriptEnabled ? (

Šis turinys atvaizduojamas su JavaScript.

) : (

Šis turinys atvaizduojamas be JavaScript.

)}
); } export default MyComponent;

Šis pavyzdys naudoja `useState` ir `useEffect` kabliukus (hooks), kad patikrintų, ar naršyklėje įjungtas JavaScript. Remdamasis tuo, jis atvaizduoja skirtingą turinį.

5. Semantinio HTML naudojimas

Semantinių HTML elementų naudojimas yra labai svarbus tiek prieinamumui, tiek Progresyviajam Tobulinimui. Semantiniai HTML elementai suteikia turiniui prasmę ir struktūrą, todėl pagalbinėms technologijoms ir paieškos sistemų robotams lengviau jį suprasti. Pavyzdžiui, naudojant `

`, `