Routing
Nykyaikaisissa verkkosovelluksissa reititys viittaa prosessiin, jossa hallitaan navigointia eri näkymien tai komponenttien välillä nykyisen URL-osoitteen tai polun perusteella. webforJ:ssä reititys luo monimutkaisen kehyksen asiakaspään navigaatiolle, jossa käyttöliittymän päivitykset tapahtuvat dynaamisesti ilman täydellisiä sivulatauksia, mikä parantaa sovelluksen suorituskykyä.
Perinteinen vs asiakaspään reititys
Perinteisessä palvelinpuolen reitityksessä, kun käyttäjä napsauttaa linkkiä, selain lähettää pyynnön palvelimelle uudelle asiakirjalle. Palvelin vastaa lähettämällä uuden HTML-sivun, mikä pakottaa selaimen arvioimaan CSS:n ja JavaScriptin uudelleen, renderöimään koko asiakirjan ja palauttamaan sovelluksen tilan. Tämä sykli aiheuttaa viiveitä ja tehottomuuksia, sillä selaimen on ladattava resursseja ja sivuston tila uudelleen. Prosessi sisältää yleensä:
- Pyyntö: Käyttäjä navigoi uuteen URL-osoitteeseen, mikä laukaisee pyynnön palvelimelle.
- Vastaus: Palvelin lähettää takaisin uuden HTML-asiakirjan yhdessä siihen liittyvien resurssien (CSS, JS) kanssa.
- Renderöinti: Selain renderöi koko sivun uudelleen, usein menettämällä aikaisemmin ladattujen sivujen tilan.
Tämä lähestymistapa voi johtaa suorituskyvyn pullonkauloihin ja suboptimaisiin käyttäjäkokemuksiin, jotka johtuvat toistuvista täydellisistä sivulatauksista.
Asiakaspään reititys webforJ:ssä ratkaisee tämän mahdollistamalla navigoinnin suoraan selaimessa, dynaamisesti päivittämällä käyttöliittymän ilman, että lähetetään uutta pyyntöä palvelimelle. Tässä on, miten se toimii:
- Yksinkertainen alkuperäinen pyyntö: Selain lataa sovelluksen kerran, mukaan lukien kaikki tarvittavat resurssit (HTML, CSS, JavaScript).
- URL-osoitetta hallinta: Reititin kuuntelee URL-osoitteen muutoksia ja päivittää näkymän nykyisen reitin mukaan.
- Dynaaminen komponenttien renderöinti: Reititin yhdistää URL-osoitteen komponenttiin ja renderöi sen dynaamisesti ilman sivun päivittämistä.
- Tilann säilyttäminen: Sovelluksen tila säilyy navigoinnin aikana, mikä varmistaa sujuvan siirtymisen näkymien välillä.
Tämä suunnittelu mahdollistaa syvän linkityksen ja URL-pohjaisen tilanhallinnan, mikä antaa käyttäjille mahdollisuuden kirjanmerkitä ja jakaa tiettyjä sivuja sovelluksessa samalla, kun he nauttivat sujuvasta, yksisivuisesta kokemuksesta.
Ydinperiaatteet
- URL-pohjainen komponenttien kartoitus: webforJ:ssä reitit on suoraan sidottu käyttöliittymän komponentteihin. URL-malli on kartoitettu tiettyyn komponenttiin, joka määrää, mitä sisältöä näytetään nykyisen polun perusteella.
- Deklaratiivinen reititys: Reitit määritellään deklaratiivisesti, tyypillisesti käyttämällä annotaatioita. Jokainen reitti vastaa komponenttia, joka renderöidään, kun reitti täsmää.
- Dynaaminen navigointi: Reititin vaihtaa dynaamisesti näkymien välillä ilman, että sivua ladataan uudelleen, pitäen sovelluksen responsiivisena ja nopeana.
Esimerkki asiakaspään reitityksestä webforJ:ssä
Tässä on esimerkki reitin määrittämisestä UserProfileView-komponentille näyttämään käyttäjän tiedot URL-osoitteen id-parametrin perusteella:
@Route(value = "user/:id")
public class UserProfileView extends Composite<Div> implements DidEnterObserver {
@Override
public void onDidEnter(DidEnterEvent event, ParametersBag parameters) {
String id = parameters.getAlpha("id").orElse("");
refreshProfile(id);
}
}
Tässä asetuksessa:
- Navigointi osoitteeseen
/user/johnrenderöisiUserProfileView-komponentin. id-parametri kaappaisijohn:in URL-osoitteesta ja mahdollistaisi sen käytön komponentissa käyttäjän tietojen hakemiseksi ja näyttämiseksi.
Aiheet
Routable Apps
Enable webforJ routing with the @Routify annotation to scan packages, manage frames, and control browser history.
Defining Routes
Reittien määrittäminen on olennaista URL-osoitteiden yhdistämiseksi tiettyihin komponentteihin. Tämä mahdollistaa sen hallitsemisen, kuinka eri osat käyttöliittymästäsi renderöidään URL-rakenteen perusteella. Kehys käyttää @Route-annotaatiota tehdäksesi tämän prosessin deklaratiiviseksi ja suoraviivaiseksi, mikä vähentää manuaalisen konfiguroinnin tarvetta.
Route Navigation
Trigger client-side navigation programmatically with Router.navigate, pass parameters, and switch views without reloads.
Route Patterns
Define dynamic URL segments, optional parameters, wildcards, and regex constraints to match webforJ routes precisely.
Query Parameters
Kyselyparametrit mahdollistavat lisätietojen siirtämisen URL-osoitteiden kautta, käyttämällä muotoa ?key1=value1&key2=value2. Kun reittiparametreja käytetään vaadittavan tiedon siirtämiseen URL-polussa, kyselyparametrit tarjoavat joustavan mekanismin vapaaehtoisten tai lisätietojen siirtämiseen. Ne ovat erityisen hyödyllisiä sisällön suodattamisessa, lajittelussa tai käsitellessä useita arvoja samalla avaimella.
State Management
Luodakseen saumattomia, dynaamisia käyttäjäkokemuksia, vaaditaan usein, että verkkosovelluksen tila heijastuu URL-osoitteessa ja säilyy selaimen navigointitapahtumien aikana. Voit saavuttaa tämän ilman sivun lataamista hyödyntämällä URL-parametrien päivityksiä ja selaushistorian tilan hallintaa. Tämä varmistaa, että käyttäjät voivat jakaa, lisätä kirjanmerkkejä tai palata tiettyihin näkymiin, joista sovellus on täysin tietoinen heidän aiemmista vuorovaikutuksistaan.
Navigointielämäkaari
3 kohdetta
Reitit Hierarkia
3 kohdetta
Navigational Frame Titles
Set browser frame titles per route with the @FrameTitle annotation or generate them dynamically using HasFrameTitle.
Routes Registration
Lisäksi reittien rekisteröimisestä @Route-annotaatioiden avulla on mahdollista rekisteröidä, päivittää tai poistaa reittejä dynaamisesti ajoitusvaiheessa sovelluksen logiikan, käyttäjäroolien tai muiden ehtojen perusteella. Tämä joustavuus mahdollistaa navigoinnin hallitsemisen dynaamisemmin, sen sijaan, että reitit määriteltäisiin staattisesti käännösvaiheessa.
Route Transitions
Reittisiirtymät tarjoavat deklaratiivisia animoituja siirtymiä, kun navigoidaan reittien välillä. Perustuu View Transitions API:in, lisäämällä @RouteTransition-annotaatio reittikomponentteihisi, reititin voi automaattisesti käsitellä animaation elinkaaren navigoinnin aikana.