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">Amacı Nedir?
Section titled “Amacı Nedir?”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.
Ne Zaman Kullanılmalı?
Section titled “Ne Zaman Kullanılmalı?”Şu durumlarda kullanmak anlamlıdır:
- Sayfada birden fazla
.luiskaynağı varsa ve hepsi aynı runtime yolunu kullanmayacaksa - Bazı kaynaklar için
vendor-fastgibi belirli bir mode zorlanmak isteniyorsa worker/main/autokararı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
.luiskaynağı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 v1 Formatı
Section titled “Manifest v1 Formatı”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.
Alan Referansı
Section titled “Alan Referansı”Üst Seviye
Section titled “Üst Seviye”| Alan | Tür | Açıklama |
|---|---|---|
version | number | Manifest formatı sürümü — şu an 1 |
rules | array | Eşleşme kuralları dizisi |
Rule Alanları
Section titled “Rule Alanları”| Alan | Değerler | Açıklama |
|---|---|---|
matchType | "suffix" | Eşleşme kuralı türü |
value | string | Eş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.
Alan Değerleri
Section titled “Alan Değerleri”matchType: "suffix"
Section titled “matchType: "suffix"”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ğer | Açıklama |
|---|---|
full | Normal tam compiler pipeline. .luis'e özgü syntax varsa güvenli yol budur. |
vendor-fast | CSS/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. |
execution
Section titled “execution”| Değer | Açıklama |
|---|---|
auto | Runtime, main thread mi worker mı kullanacağına heuristic ile karar verir |
main | Compile'ı ana thread'de zorlar |
worker | Worker yolunu zorlar; worker kullanılamazsa main thread'e fallback yapar |
Ek Örnekler
Section titled “Ek Örnekler”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" } ]}Güvenlik Sınırı (Manifest URL)
Section titled “Güvenlik Sınırı (Manifest URL)”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:
allowCrossOriginManifesttanımlı değilse veyafalseise yukarıdaki manifest URL reddedilir.allowCrossOriginManifest: trueverildiğinde manifest fetch denemesi yapılır.- Manifest yüklenemezse derleme tamamen kırılmaz; override uygulanmadan normal akışla devam edilir.
Davranış
Section titled “Davranış”- Rule match varsa
modeveexecutionoverride uygulanır - Match yoksa auto-detect devreye girer
modeveexecutionayrı 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=trueise uyarı loglanır rulesdizisindeki geçersiz rule'lar görmezden gelinir veinvalid-manifestuyarısı üretilir- Manifest dosyası çözümlenmiş absolute URL üzerinden cache'lenir; aynı manifest tekrar istendiğinde mevcut yükleme sonucu reuse edilir