Eesti

Avastage Stencil, võimas TypeScripti kompilaator korduvkasutatavate veebikomponentide loomiseks. Õppige selle põhijooni, eeliseid ja kasutamist skaleeritavate veebirakenduste ehitamiseks.

Stencil: põhjalik ülevaade TypeScripti veebikomponentide kompilaatorist

Pidevalt arenevas veebiarenduse maailmas on korduvkasutatavate, skaleeritavate ja hooldatavate komponentide vajadus esmatähtis. Stencil, TypeScripti kompilaator, kerkib esile võimsa tööriistana selle vajaduse rahuldamiseks, võimaldades arendajatel luua veebikomponente, mis integreeruvad sujuvalt erinevate raamistikega või toimivad isegi iseseisvate elementidena.

Mis on veebikomponendid?

Enne Stencilisse süvenemist mõistame alust, millele see on ehitatud: veebikomponendid. Veebikomponendid on veebiplatvormi API-de kogum, mis võimaldab teil luua korduvkasutatavaid kohandatud HTML-elemente kapseldatud stiili ja käitumisega. See tähendab, et saate defineerida oma silte nagu <my-component> ja kasutada neid oma veebirakendustes, sõltumata sellest, millist raamistikku te kasutate (või ei kasuta!).

Veebikomponentide alustehnoloogiate hulka kuuluvad:

Stencili tutvustus

Stencil on kompilaator, mis genereerib veebikomponente. Selle on loonud Ionici meeskond ja see kasutab TypeScripti, JSX-i ja kaasaegseid veebistandardeid, et luua kõrgelt optimeeritud ja jõudsaid komponente. Stencil teeb enamat kui lihtsalt koodi kompileerimine; see lisab mitmeid olulisi funktsioone, mis muudavad veebikomponentide loomise ja hooldamise lihtsamaks ja tõhusamaks.

Stencili põhifunktsioonid ja eelised

1. TypeScripti ja JSX-i tugi

Stencil toetab TypeScripti, pakkudes tugevat tüüpimist, paremat koodi organiseerimist ja suuremat arendaja produktiivsust. JSX-i kasutamine võimaldab komponendi kasutajaliidese deklaratiivset ja intuitiivset defineerimist.

Näide:

Vaatleme lihtsat loenduri komponenti, mis on kirjutatud Stencilis:


import { Component, State, h } from '@stencil/core';

@Component({
  tag: 'my-counter',
  styleUrl: 'my-counter.css',
  shadow: true
})
export class MyCounter {
  @State() count: number = 0;

  increment() {
    this.count++;
  }

  render() {
    return (
      <div class="counter-container">
        <p>Count: {this.count}</p>
        <button onClick={() => this.increment()}>Increment</button>
      </div>
    );
  }
}

2. Reaktiivne andmesidumine

Stencil pakub lihtsat viisi komponendi oleku haldamiseks ja kasutajaliidese reaktiivseks uuendamiseks. Kasutades @State dekoraatorit, käivitavad muudatused komponendi olekus automaatselt uuesti renderdamise, tagades, et kasutajaliides on alati andmetega sünkroonis.

Näide:

Eespool toodud loenduri näites muudab deklaratsioon @State() count: number = 0; muutuja count reaktiivseks. Iga kord, kui funktsioon increment() välja kutsutakse, uuendatakse muutujat count ja komponent renderdatakse uuesti, et kajastada uut väärtust.

3. Virtuaalne DOM ja tõhus renderdamine

Stencil kasutab virtuaalset DOM-i renderdamise jõudluse optimeerimiseks. Muudatused rakendatakse esmalt virtuaalsele DOM-ile ja seejärel rakendatakse tegelikule DOM-ile ainult vajalikud uuendused, minimeerides kulukaid DOM-i manipulatsioone.

4. Eelkompileerimine (AOT)

Stencil teostab AOT-kompileerimist, mis tähendab, et kood kompileeritakse ehitusprotsessi käigus, mitte käivitamise ajal. See tulemuseks on kiirem esialgne laadimisaeg ja parem käivitamisaegne jõudlus.

5. Laadimine vajadusel (Lazy Loading)

Komponendid laaditakse vaikimisi vajaduspõhiselt, mis tähendab, et need laaditakse alles siis, kui neid vaja läheb. See aitab vähendada lehe esialgset laadimisaega ja parandada rakenduse üldist jõudlust.

6. Raamistikülese ühilduvus

Üks Stencili peamisi eeliseid on selle võime genereerida veebikomponente, mis ühilduvad erinevate raamistikega, sealhulgas React, Angular, Vue.js ja isegi tavaline HTML. See võimaldab teil luua komponenditeegi üks kord ja taaskasutada seda mitmes projektis, sõltumata kasutatavast raamistikust.

7. Progressiivsete veebirakenduste (PWA) tugi

Stencil pakub sisseehitatud tuge PWA-dele, muutes paigaldatavate, usaldusväärsete ja kaasahaaravate veebirakenduste loomise lihtsaks. See sisaldab funktsioone nagu teenusetöötaja genereerimine ja manifesti tugi.

8. Väikesed paketisuurused

Stencil on loodud tootma väikeseid paketisuuruseid, tagades, et teie komponendid laaditakse kiiresti ja tõhusalt. See saavutatakse tehnikate abil nagu puuraputamine (tree-shaking) ja koodi tükeldamine (code splitting).

9. Tööriistad ja arenduskogemus

Stencil pakub rikkalikku tööriistade ja funktsioonide komplekti, mis parandavad arenduskogemust, sealhulgas:

Stenciliga alustamine

Stencili kasutuselevõtuks on teil vaja oma süsteemi installitud Node.js ja npm-i (või yarn-i). Seejärel saate Stencili CLI globaalselt installida järgmise käsuga:


npm install -g @stencil/core

Kui CLI on installitud, saate uue Stencili projekti luua käsuga stencil init:


stencil init my-component-library

See loob uue kataloogi nimega my-component-library koos põhilise Stencili projekti struktuuriga. Seejärel saate navigeerida kataloogi ja käivitada arendusserveri käsuga npm start:


cd my-component-library
npm start

See käivitab arendusserveri ja avab teie projekti veebibrauseris. Seejärel saate alustada oma veebikomponentide loomist, muutes faile kataloogis src/components.

Näide: lihtsa sisendkomponendi loomine

Loome Stencili abil lihtsa sisendkomponendi. See komponent võimaldab kasutajatel sisestada teksti ja kuvada seda lehel.

1. Looge uus komponendifail

Looge uus fail nimega my-input.tsx kausta src/components.

2. Defineerige komponent

Lisage järgmine kood faili my-input.tsx:


import { Component, State, h, Event, EventEmitter } from '@stencil/core';

@Component({
  tag: 'my-input',
  styleUrl: 'my-input.css',
  shadow: true
})
export class MyInput {
  @State() inputValue: string = '';
  @Event() inputChanged: EventEmitter;

  handleInputChange(event: any) {
    this.inputValue = event.target.value;
    this.inputChanged.emit(this.inputValue);
  }

  render() {
    return (
      <div class="input-container">
        <input type="text" value={this.inputValue} onInput={(event) => this.handleInputChange(event)} />
        <p>You entered: {this.inputValue}</p>
      </div>
    );
  }
}

See kood defineerib uue komponendi nimega my-input. Sellel on inputValue olekumuutuja, mis salvestab kasutaja sisestatud teksti. Funktsioon handleInputChange() kutsutakse välja, kui kasutaja sisestusväljale teksti trükib. See funktsioon uuendab inputValue olekumuutujat ja edastab sündmuse inputChanged koos uue väärtusega.

3. Lisage stiilid

Looge uus fail nimega my-input.css kausta src/components ja lisage järgmine CSS:


.input-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 20px;
  border: 1px solid #ccc;
  border-radius: 5px;
  margin-bottom: 10px;
}

input {
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 5px;
  font-size: 16px;
  margin-bottom: 10px;
}

4. Kasutage komponenti oma rakenduses

Nüüd saate kasutada komponenti my-input oma rakenduses, lisades oma HTML-faili järgmise koodi:


<my-input></my-input>

Stencili täpsemad kontseptsioonid

1. Komponentide kompositsioon

Stencil võimaldab teil komponente omavahel kombineerida, et luua keerukamaid kasutajaliideseid. See hõlmab komponentide pesastamist üksteise sisse ja andmete edastamist nende vahel omaduste ja sündmuste abil.

2. Omadused ja sündmused

Omadusi kasutatakse andmete edastamiseks vanemkomponendist alamkomponendile. Neid defineeritakse dekoraatori @Prop() abil.

Sündmusi kasutatakse suhtlemiseks alamkomponendist vanemkomponendile. Neid defineeritakse dekoraatori @Event() abil ja edastatakse funktsiooni emit() abil.

3. Elutsükli meetodid

Stencil pakub elutsükli meetodite komplekti, mis võimaldavad teil haakida komponendi elutsükli erinevatesse etappidesse. Nende meetodite hulka kuuluvad:

4. Testimine

Stencil pakub sisseehitatud testimisraamistikku, mis põhineb Jestil. Saate seda raamistikku kasutada oma komponentidele ühik- ja integratsioonitestide kirjutamiseks. Testimine on ülioluline tagamaks, et teie komponendid töötavad korrektselt ja vältimaks regressioone.

Stencil vs. teised veebikomponentide raamistikud

Kuigi Stencil pole ainus valik veebikomponentide loomiseks, eristub see oma keskendumisega jõudlusele, raamistikülesele ühilduvusele ja sujuvale arenduskogemusele. Teised raamistikud nagu LitElement ja Polymer pakuvad samuti lahendusi veebikomponentide arendamiseks, kuid Stencili ainulaadsed funktsioonid nagu AOT-kompileerimine ja laadimine vajadusel pakuvad teatud stsenaariumides selgeid eeliseid.

Reaalse maailma näited ja kasutusjuhud

Kokkuvõte

Stencil on võimas ja mitmekülgne tööriist veebikomponentide loomiseks. Selle keskendumine jõudlusele, raamistikülesele ühilduvusele ja suurepärasele arenduskogemusele teeb sellest suurepärase valiku kaasaegsete veebirakenduste jaoks korduvkasutatavate kasutajaliidese komponentide loomiseks. Ükskõik, kas ehitate disainisüsteemi, e-kaubanduse platvormi või lihtsat veebisaiti, aitab Stencil teil luua skaleeritavaid ja hooldatavaid komponente, mis parandavad teie rakenduse jõudlust ja hooldatavust. Veebikomponente omaks võttes ja Stencili funktsioone ära kasutades saavad arendajad luua robustsemaid, paindlikumaid ja tulevikukindlamaid veebirakendusi.

Kuna veebiarenduse maastik areneb jätkuvalt, on Stencilil hea positsioon, et mängida olulist rolli kasutajaliidese arenduse tuleviku kujundamisel. Selle pühendumus veebistandarditele, jõudluse optimeerimisele ja positiivsele arenduskogemusele teeb sellest väärtusliku tööriista igale veebiarendajale, kes soovib luua kvaliteetseid veebikomponente.