Problem
DocumentOptions / IDocumentAssets mają AddStylesheet, AddScript, AddHeadComponent<T>() i SetFavicon. Nie mają nic dla <meta> ani <link rel>.
Żeby wypisać dwa statyczne meta-tagi, konsument musi dziś napisać komponent Razora z code-behind i zarejestrować go przez AddHeadComponent<T>(). To jest nieproporcjonalne do zadania — a zadanie jest częste (weryfikacje spoza wbudowanej listy, theme-color, apple-mobile-web-app-*, link rel="me", link rel="alternate" type="application/rss+xml").
Kształt
services.AddWebsite(o =>
{
o.Document
.AddStylesheet("app.css") // istnieje
.AddMeta("theme-color", "#0b0b0b") // nowe
.AddMeta("apple-mobile-web-app-capable", "yes") // nowe
.AddLink("alternate", "/feed.xml", type: "application/rss+xml"); // nowe
});
Do rozważenia przy projektowaniu:
name vs property — Open Graph używa property, nie name. Albo drugi przeciążony wariant, albo parametr; nie da się tego zgadnąć z samej nazwy klucza.
- Deduplikacja — dwa wywołania z tym samym
name powinny nadpisywać, nie dublować, inaczej pierwszy błąd konsumenta produkuje dwa sprzeczne theme-color.
- Kolizja z meta generowanymi przez framework —
description, og:*, canonical, tagi weryfikacyjne mają swoich właścicieli. Albo AddMeta przegrywa z nimi po cichu, albo ostrzega. Skłaniam się do: framework wygrywa, a AddMeta na zarezerwowaną nazwę loguje ostrzeżenie przy starcie — nie w czasie żądania.
Powiązane
VerificationModel.Custom (słownik meta name → token) rozwiązał ten problem lokalnie dla jednego przypadku. AddMeta jest jego uogólnieniem; po jego wejściu warto sprawdzić, czy Custom nadal ma rację bytu, czy staje się cukrem składniowym.
Zakres pracy
Problem
DocumentOptions/IDocumentAssetsmająAddStylesheet,AddScript,AddHeadComponent<T>()iSetFavicon. Nie mają nic dla<meta>ani<link rel>.Żeby wypisać dwa statyczne meta-tagi, konsument musi dziś napisać komponent Razora z code-behind i zarejestrować go przez
AddHeadComponent<T>(). To jest nieproporcjonalne do zadania — a zadanie jest częste (weryfikacje spoza wbudowanej listy,theme-color,apple-mobile-web-app-*,link rel="me",link rel="alternate" type="application/rss+xml").Kształt
Do rozważenia przy projektowaniu:
namevsproperty— Open Graph używaproperty, niename. Albo drugi przeciążony wariant, albo parametr; nie da się tego zgadnąć z samej nazwy klucza.namepowinny nadpisywać, nie dublować, inaczej pierwszy błąd konsumenta produkuje dwa sprzecznetheme-color.description,og:*,canonical, tagi weryfikacyjne mają swoich właścicieli. AlboAddMetaprzegrywa z nimi po cichu, albo ostrzega. Skłaniam się do: framework wygrywa, aAddMetana zarezerwowaną nazwę loguje ostrzeżenie przy starcie — nie w czasie żądania.Powiązane
VerificationModel.Custom(słownikmeta name→ token) rozwiązał ten problem lokalnie dla jednego przypadku.AddMetajest jego uogólnieniem; po jego wejściu warto sprawdzić, czyCustomnadal ma rację bytu, czy staje się cukrem składniowym.Zakres pracy
AddMeta(name, content)+ wariant dlapropertyAddLink(rel, href, type?, hreflang?, sizes?)PageHeadw ustalonym regionie, po meta frameworka