Belge ve düzen
html_document, ortak düzen, ${children}, $page ve statik dosyalar.
use html_document
$doc = new html_document
$doc = new html_document({title: 'Başlık', lang: 'tr'})| Çağrı | Karşılığı |
|---|---|
$doc.title = '...' | <title> |
$doc.lang = 'tr' | <html lang> |
$doc.head.add(...) | <head> sonuna ekler |
$doc.head.prepend(...) | <head> başına ekler |
$doc.body.add(...) | <body> sonuna ekler |
$doc.body.prepend(...) | <body> başına ekler |
$doc.from_file(<yol>) | başka bir .lx dosyasını çalıştırıp belgesini döndürür |
$doc.body.parts | eklenen parçaların dizisi |
add ve prepend birden fazla parça alabilir ve bölümü döndürür.
Üretilen iskelet#
<!doctype html>
<html lang="tr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>...</title>
... head parçaları ...
</head>
<body>
... body parçaları ...
</body>
</html><html>, <head>, <meta charset>, <meta viewport> ve <title> belge tarafından zaten yazılır; siz yalnızca kendi eklediklerinizi yazarsınız.
Ortak düzen#
$app.layout(path.pwd + "/layout.lx")
$app.layout({file: path.pwd + "/layout.lx"})# layout.lx
$doc = new html_document
$doc.type = html_document.types.LAYOUT
$doc.head.add(`<link rel="stylesheet" href="/public/stil.css">`)
$doc.body.add(`
<header>Belge ve düzen · LexerLang</header>
<main>${children}</main>
`)| İşaret | Yerine geçen |
|---|---|
${children} | sayfanın gövdesi — zorunlu |
Belge ve düzen · LexerLang | sayfanın başlığı |
tr | sayfanın dili |
Düzen dosyası türünü bildirmek zorundadır (html_document.types.LAYOUT); bildirmezse sayfa sayılır ve hata verilir. ${children} yoksa da hata verilir — içeriğin nereye geleceği belirsiz olurdu.
$page#
Düzen sayfanın verisini $page ile de okur:
if not $page.indexable then
$doc.body.add(`<small>Bu sayfa dizine eklenmez.</small>`)
end if| Alan | İçerik |
|---|---|
$page.title · $page.lang | sayfanın başlığı ve dili |
$page.indexable | sayfa dizine eklenebilir mi |
$page.body · $page.head | sayfanın ham parçaları |
İşaretler kısa yol, $page ise koşul yazmaya yarar. $page sayfanın kopyasıdır: düzen sayfayı değiştiremez, aksi halde çıktının nereden geldiği izlenemez olurdu.
Parça sayfa — from_file#
# home.lx
package home
use html_document
$doc = new html_document
$doc.body.add(`<form>...</form>`)$index = new html_document
$index = $index.from_file(path.pwd + "/home.lx")
$doc.body.add($index.body) # yalnızca gövdesini yerleştir
$doc.body.add($index) # aynı şey: belge verilirse gövdesi eklenir- Dahil edilen dosya kendi kapsamında çalışır; çağıranın değişkenlerini görmez ve değiştiremez. PHP'nin
include'undan bilinçli farkı budur. - Dönen belge dosyadaki
$doc'tur.$docyoksa dosyadaki tekhtml_documentkullanılır; birden fazlaysa hata verilir. - Belge verildiğinde yalnızca gövde eklenir;
headsessizce karışmaz. - Döngüsel include yakalanır.
Statik dosyalar#
$app.static({url_path: "/public", directory: path.pwd + "/public"})Verilen önekle gelen istekler dizinden karşılanır; route tablosundan önce bakılır. Dizin dışına çıkan yollar (/public/../gizli) reddedilir. İçerik türü uzantıdan belirlenir.
Robots ve sitemap#
$doc.indexable = false # sayfaya "noindex, nofollow" meta etiketiVarsayılan true.
$app.routes.create_sitemap({
output_file: path.pwd + "/public/sitemap.xml",
base_url: "https://ornek.com",
skip: ["/gizli"]
})Sitemap açılışta yazılır ve parametresiz yolları içerir: /urun/:id deseninin hangi adreslere karşılık geldiği bilinemez.
indexable = false sayfaya meta etiketi koyar ama sitemap'i etkilemez: sitemap açılışta, işleyiciler çalıştırılmadan yazılır; bir sayfanın kendini dizine kapatıp kapatmadığı o an bilinemez. Bir yolu listeden çıkarmak için skip kullanılır.