Routing to technika, której będziesz używać z wieloma frameworkami, w tym Svelte. Dowiedz się, jak wykorzystać to na swoją korzyść.
Svelte to szybko rozwijająca się platforma internetowa, której można używać do tworzenia stron internetowych. Prezentuje się jako lekka, łatwa w użyciu alternatywa dla popularnych frameworków, takich jak React i Vue.
Każda popularna platforma JavaScript ma towarzyszącą bibliotekę, której można użyć do routingu. Dowiedz się, jak Svelte pozwala zarządzać adresami URL i kodem, który je obsługuje.
Popularne biblioteki routingu
Najpopularniejszą biblioteką routingu dla React jest React Router, stworzony przez zespół Remix. W przypadku VueJS istnieje Vue Router, który daje programiście precyzyjną kontrolę nad dowolną nawigacją. W świecie Svelte najpopularniejszą biblioteką routingu jest smukłe-routing.
Inną główną biblioteką routingu dla Svelte jest smukły nawigator. Ponieważ jest to widelec smukłe-routing, warto najpierw zapoznać się z tą biblioteką.
Jak działa biblioteka svelte-routing
Istnieją trzy ważne elementy obsługi tras w Svelte: routera, Połączyć, I Trasa. Aby użyć ich w swojej aplikacji, możesz po prostu zaimportować te narzędzia z pliku smukłe-routing biblioteka.
<scenariusz>
zaimportuj {Route, Router, Link} z "svelte-routing";
scenariusz>
Komponent Router może mieć dwa opcjonalne rekwizyty: ścieżka bazowa I adres URL. The ścieżka bazowa właściwość jest podobna do nazwa podstawowa prop w React Router.
Domyślnie jest ustawiony na „/”. basepath może się przydać, jeśli aplikacja ma wiele punktów wejścia. Rozważmy na przykład następujący kod Svelte:
<scenariusz>
importuj { Route, Router, Link } z "svelte-routing";
niech ścieżka bazowa = "/użytkownik";
niech ścieżka = lokalizacja.nazwaścieżki;
scenariusz><routera {ścieżka bazowa}>
<dzna kliknięcie={() => (ścieżka = lokalizacja.nazwaścieżki)}>
<PołączyćDo="/">Idź do domuPołączyć>
<PołączyćDo="/użytkownik/dawid">Zaloguj się jako DawidPołączyć>
dz><główny>
Jesteś tutaj: <kod>{ścieżka}kod><Trasaścieżka="/">
<h1>Witaj w domu!h1>
Trasa>
<Trasaścieżka="/ dawid">
<h1>Witaj Dawid!h1>
Trasa>
główny>
routera>
Jeśli uruchomisz ten kod, zauważysz, że po kliknięciu pliku Idź do domu przycisk, przeglądarka przechodzi do ścieżki podstawowej „/ user”. Trasa definiuje komponent, który powinien być renderowany, jeśli ścieżka pasuje do określonej wartości Trasa rekwizyt.
Możesz określić, które elementy mają być renderowane w komponencie Route lub jako oddzielne elementy .smukły plik, o ile poprawnie zaimportujesz ten plik. Na przykład:
<Trasaścieżka="/o"część={O}/>
Powyższy blok kodu mówi przeglądarce, aby wyrenderowała plik Aplikacja składnika, gdy nazwa ścieżki to „/about”.
Podczas używania smukłe-routing, zdefiniuj linki wewnętrzne za pomocą Połączyć komponent zamiast tradycyjnego HTML A elementy.
Jest to podobne do sposobu, w jaki React Router obsługuje łącza wewnętrzne; każdy komponent łącza powinien mieć plik Do prop, który mówi przeglądarce, do której ścieżki ma nawigować.
Gdy przeglądarka renderuje komponent Svelte, Svelte automatycznie konwertuje wszystkie komponenty Link na odpowiedniki A elementy, zastępując Do rekwizyt z href atrybut. Oznacza to, że pisząc:
<PołączyćDo="/niektóre/ścieżka">To jest komponent łącza w svelte-routinguPołączyć>
Svelte przedstawia to przeglądarce jako:
<Ahref="/niektóre/ścieżka">To jest komponent łącza w svelte-routinguA>
Powinieneś użyć komponentu Link zamiast tradycyjnego A element podczas pracy z svelte-routing. To dlatego, że A elementy domyślnie wykonują przeładowanie strony.
Tworzenie SPA z Svelte i Svelte-Routing
Nadszedł czas, aby zastosować wszystko, czego się nauczyłeś, w praktyce, tworząc prostą aplikację słownikową, która umożliwia użytkownikowi wyszukiwanie słów. Ten projekt będzie korzystał z bezpłatnego Interfejs API słownika.
Aby rozpocząć, upewnij się, że masz zainstalowaną Yarn na swoim komputerze i uruchom:
przędza tworzy vite
Spowoduje to utworzenie rusztowania przy użyciu nowego projektu narzędzie do budowania Vite. Nazwij swój projekt, a następnie wybierz „Svelte” jako strukturę i „JavaScript” jako wariant. Następnie uruchom kolejno następujące polecenia:
płyta CD
przędza
Przędza dodaje svelte-routing
rozwinięcie przędzy
Następnie usuń zawartość pliku Smukłe aplikacje plik i zmień strukturę projektu, aby wyglądała tak:
Na powyższej ilustracji widać, że istnieje folder „components” z dwoma plikami: Strona główna. smukły I Znaczenie. smukły. Znaczenie. smukły jest komponentem, który wyświetli się, gdy użytkownik wyszuka słowo.
Przejdź do Smukłe aplikacje i zaimportuj komponenty Route, Router i Link z biblioteki svelte-routing. Upewnij się również, że zaimportowałeś plik Strona główna. smukły I Smukłe aplikacje składniki.
<scenariusz>
importuj { Route, Router, Link } z "svelte-routing";
zaimportuj dom z „./components/Home.svelte”;
importuj znaczenie z „./components/Meaning.svelte”;
scenariusz>
Następnie utwórz komponent Router, który zawija plik główny Element HTML z klasą „app”.
<routera>
<głównyklasa=„aplikacja”>
główny>
routera>
w główny element, dodaj a nawigacja element z komponentem Link jako jego dzieckiem. Właściwość „do” tego komponentu linku powinna wskazywać „/”. Ten komponent pozwoli użytkownikowi przejść do strony głównej.
<głównyklasa=„aplikacja”>
<nawigacja>
<PołączyćDo="/">DomPołączyć>
nawigacja>
główny>
Teraz czas na pracę nad trasami. Gdy użytkownik ładuje aplikację, plik Dom komponent powinien renderować.
Przejście do „/find/:word” powinno wyrenderować Oznaczający część. Klauzula „:word” jest parametrem ścieżki.
W przypadku tego projektu nie musisz martwić się o CSS. Po prostu zastąp zawartość własną aplikacja.css plik z zawartością aplikacja.css plik z tego repozytorium GitHub.
Nadszedł czas na zdefiniowanie tras. Ścieżka poziomu głównego powinna renderować plik Dom komponent, podczas gdy „/find/:word” powinno renderować Oznaczający część.
<Trasaścieżka="/"część={Dom} />
<Trasaścieżka="/znajdź/:słowo"niech: param>
<Oznaczającysłowo={parametry.słowo} />
Trasa>
Ten blok kodu wykorzystuje pozwalać dyrektywę, aby przekazać parametr „word” do metody Oznaczający komponent jako rekwizyt.
Teraz otwórz Strona główna. smukły zarchiwizuj i zaimportuj plik nawigować z biblioteki „svelte-routing” i zdefiniuj zmienną wprowadzone słowo.
<scenariusz>
importuj {nawiguj} z „svelte-routing”;
wprowadź słowo;
scenariusz>
Pod scenariusz tag, utwórz główny element z klasą „strona główna”, a następnie utwórz plik dz element z klasą „słownik-tekst”.
<głównyklasa=„strona główna”>
<dzklasa="tekst słownika">Słownikdz>
główny>
Następnie utwórz formularz z na: złożyć dyrektywa. Ten formularz powinien zawierać dwoje dzieci: an wejście element, którego wartość jest powiązana z wprowadzone słowo zmienna i przycisk przesyłania, który jest renderowany warunkowo, gdy tylko użytkownik zacznie pisać:
<formularzna: złożyć|zapobiec Domyślnie={() => nawigacja(`/find/${enteredWord.toLowerCase()}`)}>
<wejście
typ="tekst"
powiązanie: wartość={wprowadzone słowo}
placeholder="Rozpocznij wyszukiwanie..."
autofokus
/>
{#jeśli wprowadzono słowo}
<przycisktyp="składać">Wyszukaj słowoprzycisk>
{/Jeśli}
formularz>
Ten blok kodu wykorzystuje nawigować funkcję przekierowania użytkownika po zakończeniu akcji przesyłania. Teraz otwórz Znaczenie. smukły plik i w znaczniku skryptu wyeksportuj plik słowo podpieraj i twórz Komunikat o błędzie zmienny:
wyeksportuj niech słowo;
let errorMessage = "Brak połączenia. Sprawdź swój internet";
Następnie wyślij żądanie GET do interfejsu API słownika, przekazując plik słowo jako parametr:
asynchronicznyfunkcjonowaćpobierz znaczenie słowa(słowo) {
konst odpowiedź = czekać na aportować(
` https://api.dictionaryapi.dev/api/v2/entries/en/${słowo}`
);konst json = czekać na odpowiedź.json();
konsola.log (json);Jeśli (odpowiedź ok) {
powrót json;
} w przeciwnym razie {
komunikat o błędzie = komunikat json;
rzucićnowyBłąd(json);
}
}
pozwalać obietnica = getWordMeaning (słowo);
W powyższym bloku kodu funkcja asynchroniczna zwraca dane JSON, jeśli odpowiedź się powiedzie. Zmienna obietnicy reprezentuje wynik pobierz znaczenie słowa funkcja po wywołaniu.
W znacznikach zdefiniuj element div z klasą strona znaczeniowa. Następnie zdefiniuj element h1, który zawiera słowo zmienna małymi literami:
<dzklasa=„strona-znaczenie”>
<h1>
{word.toLowerCase()}
h1>
dz>
Następnie użyj bloków oczekujących Svelte'a, aby wywołać metodę pobierz znaczenie słowa funkcjonować:
{#czekaj na obietnicę}
<P>Ładowanie...P>
{:następnie wpisy}
{:złapać}
{Komunikat o błędzie}
{/czekać na}
Ten kod wyświetla Ładowanie... napisz kiedy wysłano żądanie GET do interfejsu API. Jeśli wystąpi błąd, wyświetli zawartość pliku Komunikat o błędzie.
w {:następnie wpisy} blok, dodaj:
{#każdy wpis jako wpis}
{#każdy wpis.znaczenie jako znaczenie}
<dzklasa="wejście">
<dzklasa="część mowy">
{znaczenie.część mowy}
dz><ol>
{#każde znaczenie.definicje jako definicja}
<li>
{definicja.definicja}
<br />
<dzklasa="przykład">
{#if definicja.przykład}
{definicja.przykład}
{/Jeśli}
dz>
li>
{/każdy}
ol>
dz>
{/każdy}
{/każdy}
Jeśli obietnica zostanie rozwiązana pomyślnie, plik wpisy zmienna zawiera wynikowe dane.
Następnie dla każdej iteracji wejście I oznaczający, ten kod renderuje część mowy za pomocą znaczenie.część mowy oraz wykaz używanych definicji definicja. definicja. Wyświetli również przykładowe zdanie, jeśli takie jest dostępne.
Otóż to. Utworzyłeś słownik Single Page Application (SPA) przy użyciu svelte-routingu. Możesz pójść dalej, jeśli chcesz, lub możesz się wymeldować smukły nawigator, widelec smukłe-routing.
Poprawa doświadczenia użytkownika dzięki routingowi po stronie klienta
Obsługa routingu w przeglądarce zamiast na serwerze ma wiele zalet. Aplikacje korzystające z routingu po stronie klienta mogą wydawać się płynniejsze dla użytkownika końcowego, zwłaszcza w połączeniu z animacjami i przejściami.
Jeśli jednak chcesz, aby Twoja witryna zajmowała wyższe pozycje w wyszukiwarkach, powinieneś rozważyć obsługę tras na serwerze.