MDX
Markdown, metni biçimlendirmek için kullanılan hafif bir biçimlendirme dilidir. Düz metin sözdizimi kullanarak yazmanıza ve yapısal olarak geçerli HTML'ye dönüştürmenize olanak tanır. Genellikle web sitelerinde ve bloglarda içerik yazmak için kullanılır.
Siz aşağıdakini yazdığınızda...
Çıktı:
MDX, JSX'i doğrudan markdown dosyalarınıza yazmanıza olanak tanıyan bir markdown üst kümesidir. Dinamik etkileşim eklemenin ve içeriğinize React bileşenleri yerleştirmenin güçlü bir yoludur.
Next.js, hem uygulamanızın içindeki yerel MDX içeriğini hem de sunucudan dinamik olarak getirilen uzak MDX dosyalarını destekleyebilir. Next.js eklentisi, Sunucu Bileşenlerinde (app
'de varsayılan) kullanım desteği de dahil olmak üzere Markdown ve React bileşenlerini HTML'ye dönüştürmeyi yönetir.
@next/mdx
@next/mdx
@next/mdx
paketi, projelerinizin kök dizinindeki next.config.js
dosyasında yapılandırılır. Yerel dosyalardan veri alır ve doğrudan /pages
veya /app
dizininizde .mdx
uzantılı sayfalar oluşturmanıza olanak tanır.
Başlarken
@next/mdx
paketini yükleyin:
Uygulamanızın kök dizininde (app/
veya src/
klasörünün üst dizini) mdx-components.tsx
dosyasını oluşturun:
next.config.js
dosyasını mdxRs
kullanacak şekilde güncelleyin:
app
dizininize MDX içerikli yeni bir dosya ekleyin:
İçeriği görüntülemek için MDX
dosyasını bir pages
içine aktarın:
Uzaktan MDX (Remote MDX)
Markdown veya MDX dosyalarınız uygulamanızın içinde yaşamıyorsa, bunları sunucudan dinamik olarak getirebilirsiniz. Bu, bir CMS'den veya başka bir veri kaynağından içerik almak için kullanışlıdır.
MDX içeriğini almak için iki popüler topluluk paketi vardır: next-mdx-remote
ve contentlayer
. Örneğin, aşağıdaki örnek next-mdx-remote
kullanmaktadır:
Bilmekte fayda var: Lütfen dikkatli olun. MDX, JavaScript olarak derlenir ve sunucuda yürütülür. MDX içeriğini yalnızca güvenilir bir kaynaktan almalısınız, aksi takdirde bu durum uzaktan kod yürütülmesine (RCE) yol açabilir.
Düzenlemeler (Layouts)
MDX içeriği etrafında bir düzen paylaşmak için Uygulama Yönlendiricisi ile yerleşik düzen desteğini kullanabilirsiniz.
Remark ve Rehype Eklentileri
MDX içeriğini dönüştürmek için isteğe bağlı olarak remark
ve rehype
eklentileri sağlayabilirsiniz. Örneğin, GitHub Flavored Markdown'ı desteklemek için remark-gfm
kullanabilirsiniz.
remark
ve rehype
ekosistemi yalnızca ESM olduğundan, yapılandırma dosyası olarak next.config.mjs
dosyasını kullanmanız gerekir.
Frontmatter
Frontmatter, bir sayfa hakkındaki verileri depolamak için kullanılabilen YAML benzeri bir anahtar/değer eşleştirmesidir. Öntanımlı olarak @next/mdx
frontmatter'ı desteklemez, ancak MDX içeriğinize frontmatter eklemek için gray-matter gibi birçok çözüm vardır.
Sayfa meta verilerine @next/mdx
ile erişmek için .mdx
dosyası içinden bir meta nesnesini dışa aktarabilirsiniz:
Özel Unsurlar
Markdown kullanmanın hoş yönlerinden biri, yerel HTML
öğeleriyle eşleşerek yazmayı hızlı ve sezgisel hale getirmesidir:
Yukarıdaki işlem aşağıdaki HTML
'yi oluşturur:
Web sitenize veya uygulamanıza özel bir his vermek için kendi öğelerinizi şekillendirmek istediğinizde, kısa kodları aktarabilirsiniz. Bunlar, HTML
öğelerine eşlenen kendi özel bileşenlerinizdir. Bunu yapmak için MDXProvider
'ı kullanır ve bir components nesnesini prop olarak geçirirsiniz. Components nesnesindeki her nesne anahtarı bir HTML
öğesi adıyla eşleşir.
Etkinleştirmek için next.config.js
içinde providerImportSource: "@mdx-js/react"
belirtmeniz gerekir:
Ardından sağlayıcıyı sayfanızda ayarlayın
Site genelinde kullanıyorsanız, sağlayıcıyı _app.js
'ye eklemek isteyebilirsiniz, böylece tüm MDX sayfaları özel öğe yapılandırmasını alır.
Derin Anlatım: Markdown'ı HTML'e nasıl dönüştürürsünüz?
React, Markdown'ı yerel olarak anlamaz. Markdown düz metninin önce HTML'ye dönüştürülmesi gerekir. Bu, remark
ve rehype
ile gerçekleştirilebilir.
remark
, markdown etrafında bir araç ekosistemidir. rehype
da aynıdır, ancak HTML içindir. Örneğin, aşağıdaki kod parçacığı markdown'u HTML'ye dönüştürür:
remark
ve rehype
ekosistemi, sözdizimi vurgulama, başlıkları bağlama, içindekiler tablosu oluşturma ve daha fazlası için eklentiler içerir.
Aşağıda gösterildiği gibi @next/mdx
kullanırken, sizin için halledildiğinden doğrudan remark
ve rehype
kullanmanıza gerek yoktur.
Rust tabanlı MDX derleyicisini kullanma (Deneysel)
Next.js, Rust dilinde yazılmış yeni bir MDX derleyicisini desteklemektedir. Bu derleyici hala deneyseldir ve üretim kullanımı için önerilmez. Yeni derleyiciyi kullanmak için next.config.js
dosyasını withMDX
'e aktarırken yapılandırmanız gerekir:
Yararlı Bağlantılar
Last updated