bestes-wetter.de jest online: opowieści outdoorowe na szybkiej bazie Blazor

Druga witryna w rodzinie CARECOM jest online – dwujęzyczna platforma o szlakach, podróżach i uczciwie przetestowanym sprzęcie. Spojrzenie za kulisy dla wszystkich, którzy lubią nie tylko efekt, ale i technikę.

ConsultingHarald Mühlhoff 3 min czytania

Karta startowa bestes-wetter.de: logo, domena i hasło „szlaki, podróże, sprzęt — uczciwie przetestowane, starannie udokumentowane“

Od dziś bestes-wetter.de działa produkcyjnie – moja druga witryna w rodzinie CARECOM i świadomy kontrast wobec świata doradztwa i fotografii tutaj, na carecom.de. Rzecz dotyczy tego, co na zewnątrz: dalekich wędrówek, jak przejście przez Alpy z Garmisch do Sterzing, miast zwiedzanych pieszo oraz sprzętu, który pochodzi nie z folderu, lecz z gór. Ambicja zawarta jest już w haśle: uczciwie przetestowane, starannie udokumentowane.

Ponieważ jest to strona architekta i programisty oprogramowania, chcę opowiedzieć nie tylko o tym, co powstało, ale też rzucić kilka spojrzeń na to, jak. Pod maską to aplikacja Blazor Web App na .NET 10 – renderowana po stronie serwera, z interaktywnymi wyspami tam, gdzie się to opłaca – ale spokojnie, nie będzie to white paper.

Stara stodoła na siano na górskiej łące o zmierzchu, w tle sylwetka Alp
Wieczorny nastrój podczas przejścia przez Alpy – właśnie takie chwile mają uchwycić relacje.

Jedna baza dla wielu witryn

bestes-wetter.de stoi na tej samej podstawie co carecom.de – na wspólnej bibliotece Razor Class Library, którą wyodrębniliśmy podczas budowy carecom.de. Baner cookie, wielojęzyczność, zestaw narzędzi SEO z mapą witryny i hreflang, wysyłka poczty przez MailKit: wszystko to leży w jednym miejscu i jest jedynie na nowo ubierane dla każdej witryny. Obecnie ta baza nosi już kilka siostrzanych witryn – każda nowa powstaje szybciej niż poprzednia, a jedno ulepszenie fundamentu przynosi korzyść wszystkim naraz. Właśnie dlatego opłaca się czysty rozdział fundamentu od fasady.

Treść pomyślana jako dane

Relacja z trasy to coś więcej niż ciągły tekst. Ma etapy, przewyższenia, trasę, datowane zdjęcia i tu i ówdzie poradę dotyczącą sprzętu. Dlatego każdy artykuł leży jako lekki plik metadanych XML obok czystego tekstu Markdown. Tekst renderowany jest przez Markdig, rozszerzony o własne bloki kontenerowe: :::leg dla etapu wraz z dystansem, profilem wysokości i mapą, :::product-card dla rekomendacji sprzętu, :::pros-cons dla uczciwego rozważenia. Pisanie pozostaje blisko czystego tekstu, a efekt mimo to jest ustrukturyzowany i czytelny maszynowo. A ponieważ tekst artykułu nie zmienia się już w czasie działania, każda treść jest parsowana dokładnie raz, a gotowy HTML jest następnie serwowany z pamięci podręcznej.

Mapy i obrazy, które trzymają tempo

Trasy chcą być widziane na mapie. Zajmuje się tym Leaflet – ale nie w głównym pakiecie, lecz ładowany na żądanie, gdy tylko strona rzeczywiście zawiera mapę. Biblioteka jest hostowana samodzielnie na własnym serwerze, a inicjalizacja zaczepia się nie tylko o pierwsze załadowanie strony, ale też o Enhanced Navigation Blazora – dzięki czemu mapy pojawiają się niezawodnie również po kliknięciu w obrębie aplikacji. Przy zmianie strony osierocone instancje map są ponownie sprzątane; w przeciwnym razie Leaflet pozostawia po sobie nasłuchiwacze resize i pętle animacji, które później wchodziłyby w drogę.

Zdjęcia z kolei istnieją w kilku rozdzielczościach jako WebP i są serwowane przez srcset, tak aby smartfon nie pobierał wariantu desktopowego. Zanim pojawi się ostry obraz, maleńki, rozmyty podgląd trzyma jego miejsce – zdjęcie wtapia się miękko, zamiast wyskakiwać gwałtownie. Drobiazgi, które razem czynią różnicę między „ładuje się" a „po prostu jest".

Dwa języki od samego początku

Witryna mówi po niemiecku i angielsku, i to nie jako doklejony później dodatek. Teksty interfejsu leżą jako XML i są przez generator źródeł Roslyn odlewane podczas kompilacji w bezpieczny typowo kod C# – każdy klucz tekstowy staje się w ten sposób właściwością, a literówka wychodzi na jaw już przy kompilacji, a nie dopiero u odwiedzającego. Na zewnątrz odpowiednie sygnały hreflang mówią Google, by rozpoznawał wersję niemiecką i angielską jako równorzędne rodzeństwo, a nie brał ich za zduplikowaną treść.

Rekomendacje, które linkuje renderer

Niektóre rekomendacje sprzętu zawierają linki partnerskie – otwarcie zadeklarowane. W Markdownie znajduje się tylko neutralny względem źródła symbol zastępczy jak amazon:<id-produktu>; dopiero przy renderowaniu ArticleRenderer zamienia go w gotowy link partnerski, wraz z rel="sponsored" i celem w nowej karcie. Korzyść jest własnej roboty: kto pisze tekst, nie musi zajmować się parametrami śledzenia, a zmiana partnera to kwestia konfiguracji, a nie szukania-i-zamieniania przez wszystkie artykuły.

Zajrzyj koniecznie

Najprzyjemniej oczywiście doświadczyć tego wszystkiego na samej rzeczy. Każdy, kto ma ochotę na góry, miasta i dobrze udokumentowany sprzęt, jest serdecznie zaproszony na bestes-wetter.de. A kto chciałby wiedzieć, jak taką stronę można zrealizować dla własnego przedsięwzięcia: właśnie po to jest CARECOM Consulting.

Harald Mühlhoff

Wystąpił błąd. Załaduj ponownie 🗙

Ponowne łączenie z serwerem …

Ponowne połączenie nie powiodło się – następna próba za s.

Ponowne połączenie nie powiodło się.
Spróbuj ponownie lub załaduj stronę od nowa.

Serwer wstrzymał sesję.

Nie udało się wznowić sesji.
Spróbuj ponownie lub załaduj stronę od nowa.