İçeriğe geç

Manifest Attribute

data-luis-manifest, kaynak bazında compile mode ve execution stratejisi belirlemek için kullanılan ayrı bir attribute'tur. data-luis değeri değildir — birlikte kullanılabilir.

<link
rel="stylesheet"
href="./styles.luis"
data-luis="performance"
data-luis-manifest="/lenty-hybrid.json"
>

Bu attribute'un amacı, aynı sayfadaki farklı .luis kaynaklarına farklı runtime kararları verebilmektir.

Örneğin:

  • vendor ağırlıklı bir dosyayı daha hafif compile mode ile çalıştırmak
  • büyük bir kaynağı worker yoluna zorlamak
  • bazı kaynaklarda varsayılan auto kararı bırakıp, bazılarını açıkça override etmek

Kısacası data-luis-manifest, kaynak bazında merkezi bir runtime karar tablosu sağlar.


Şu durumlarda kullanmak anlamlıdır:

  • Sayfada birden fazla .luis kaynağı varsa ve hepsi aynı runtime yolunu kullanmayacaksa
  • Bazı kaynaklar için vendor-fast gibi belirli bir mode zorlanmak isteniyorsa
  • worker / main / auto kararını tek tek HTML üzerinde dağıtmak yerine merkezi bir manifest dosyasında toplamak istiyorsanız
  • aynı karar setini birden fazla sayfa veya kaynak arasında tekrar kullanmak istiyorsanız

Şu durumlarda çoğu zaman gerekmez:

  • tek bir .luis kaynağınız varsa
  • yalnızca basit data-luis="lazy,worker" gibi doğrudan attribute kullanımı yeterliyse
  • kaynaklar arasında farklı mode/execution ihtiyacı yoksa

Pratik kural:

  • birkaç basit seçenek için data-luis
  • kaynak bazlı merkezi override için data-luis-manifest

Manifest dosyası JSON formatındadır:

{
"version": 1,
"rules": [
{
"matchType": "suffix",
"value": "/vendor/bootstrap.luis",
"mode": "vendor-fast",
"execution": "worker"
}
]
}

rules içindeki her kural mode, execution veya her ikisini birden taşıyabilir.


AlanTürAçıklama
versionnumberManifest formatı sürümü — şu an 1
rulesarrayEşleşme kuralları dizisi
AlanDeğerlerAçıklama
matchType"suffix"Eşleşme kuralı türü
valuestringEşleşme değeri
mode"full", "vendor-fast"Compile mode override
execution"auto", "main", "worker"Execution path override

mode ve execution alanları ayrı ayrı isteğe bağlıdır — ancak bir rule'da en az biri bulunmalıdır.


sourceId için endsWith(value) eşleşmesi yapar. Query ve hash kısımları önce atılır.

{ "matchType": "suffix", "value": "/vendor/bootstrap.luis" }
DeğerAçıklama
fullNormal tam compiler pipeline. .luis'e özgü syntax varsa güvenli yol budur.
vendor-fastCSS/vendor ağırlıklı kaynaklar için daha hafif yol. @fun, @for gibi preprocess adımlarını atlar. Kaynak .luis syntax gerektiriyorsa runtime otomatik full'e düşer.
DeğerAçıklama
autoRuntime, main thread mi worker mı kullanacağına heuristic ile karar verir
mainCompile'ı ana thread'de zorlar
workerWorker yolunu zorlar; worker kullanılamazsa main thread'e fallback yapar

Yalnızca mode override:

{
"version": 1,
"rules": [
{
"matchType": "suffix",
"value": "/vendor/bootstrap.luis",
"mode": "vendor-fast"
}
]
}

Yalnızca execution override:

{
"version": 1,
"rules": [
{
"matchType": "suffix",
"value": "/interactive/dashboard.luis",
"execution": "worker"
}
]
}

data-luis-manifest URL'i de runtime URL politikasına tabidir.

Varsayılan davranış:

  • same-origin manifest URL zorunludur
  • boş, parse edilemeyen veya tehlikeli şemalı URL'ler (javascript:, data: vb.) reddedilir
  • cross-origin manifest ancak açık policy override ile kabul edilir

Detaylı örnek:

<script>
window.__LentyStyleSecurityPolicy = {
// Varsayılan false; burada örnek olarak cross-origin manifest'e izin veriliyor.
allowCrossOriginManifest: true,
};
</script>
<link
rel="stylesheet"
href="/styles/app.luis"
data-luis="performance"
data-luis-manifest="https://cdn.example.com/lenty-hybrid.json"
>

Açıklama:

  1. allowCrossOriginManifest tanımlı değilse veya false ise yukarıdaki manifest URL reddedilir.
  2. allowCrossOriginManifest: true verildiğinde manifest fetch denemesi yapılır.
  3. Manifest yüklenemezse derleme tamamen kırılmaz; override uygulanmadan normal akışla devam edilir.

  • Rule match varsa mode ve execution override uygulanır
  • Match yoksa auto-detect devreye girer
  • mode ve execution ayrı ayrı çözülür; her biri için ilk eşleşen rule ilgili override'ı döndürür
  • Geçersiz veya erişilemeyen manifest derlemeyi durdurmaz; debug=true ise uyarı loglanır
  • rules dizisindeki geçersiz rule'lar görmezden gelinir ve invalid-manifest uyarısı üretilir
  • Manifest dosyası çözümlenmiş absolute URL üzerinden cache'lenir; aynı manifest tekrar istendiğinde mevcut yükleme sonucu reuse edilir