Skip to content
Mithril.js 2
Main Navigation KılavuzAPI

Türkçe

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
čeština
magyar

Türkçe

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
čeština
magyar

Görünüm

Sidebar Navigation

Başlangıç

Kurulum

Basit Uygulama

Kaynaklar

JSX

Eski Tarayıcılarda ES6+

Animasyonlar

Test

Örnekler

Üçüncü Taraf Entegrasyonu

Yol Yönetimi

Temel kavramlar

Sanal DOM Düğümleri

Bileşenler

Yaşam Döngüsü Yöntemleri

Anahtarlar

Otomatik Yeniden Çizim Sistemi

Çeşitli

Framework Karşılaştırması

v1.x'ten v2.x'e Geçiş

v0.2.x'ten Geçiş

API

Bu sayfada

Yol Yönetimi ​

m.route ve m.request fonksiyonlarının her birinde yol (path) olarak adlandırılan bir kavram bulunur. Bu, yönlendirileceğiniz veya veri çekeceğiniz URL'yi oluşturmak için kullanılır.

Yol Türleri ​

İki temel yol türü vardır: ham yollar ve parametreli yollar.

  • Ham yollar, doğrudan URL olarak kullanılan basit dizelerdir. Herhangi bir değişiklik veya ayrıştırma yapılmaz. Tüm parametreler sonuna eklenerek normalleştirilir.
  • Parametreli yollar, URL enjeksiyonuna karşı güvenliği sağlamak ve kullanımı kolaylaştırmak amacıyla, değerler varsayılan olarak otomatik olarak kodlanarak yollara eklenir.

m.request için bunlar neredeyse her URL olabilir, ancak rotalar için bunlar yalnızca şema veya alan adı içermeyen mutlak URL yol adları olabilir.

Yol Parametreleri ​

Yol parametreleri oldukça basittir. İki farklı biçimde kullanılırlar:

  • :foo - Bu, params.foo değerini URL'ye eklerken, değeri otomatik olarak kodlar.
  • :foo... - Bu, params.foo değerini URL'ye ham olarak (kodlamadan) ekler.

Buradaki params nesnesinin ne anlama geldiğini merak ediyor olabilirsiniz. Cevap basittir: bu, ya m.route.set(path, params) ya da m.request({url, params}) içindeki params nesnesidir.

m.route(root, defaultRoute, routes) aracılığıyla rotalar tanımlarken, bu parametreleri rotalardan değerleri çıkarmak için kullanabilirsiniz. Temelde yolları oluşturma mantığıyla aynı şekilde çalışır, ancak bu işlem tersine çevrilmiştir.

javascript
// Tek bir öğeyi düzenleme
m.route(document.body, '/edit/1', {
  '/edit/:id': {
    view: function () {
      return [m(Menu), m('h1', 'Düzenlenmekte olan kullanıcı ' + m.route.param('id'))]; // Düzenlenmekte olan kullanıcı + id
    },
  },
});

// Yol ile tanımlanan bir öğeyi düzenleme
m.route(document.body, '/edit/pictures/image.jpg', {
  '/edit/:file...': {
    view: function () {
      return [m(Menu), m('h1', 'Düzenlenmekte olan dosya ' + m.route.param('file'))]; // Düzenlenmekte olan dosya + file
    },
  },
});

İlk örnekte, varsayılan rotaya gittiğinizi varsayarsak, m.route.param("id") "1" olarak ve m.route.param("file") pictures/image.jpg olarak okunacaktır.

Yol parametreleri /, - veya . karakterleri ile ayrılabilir. Bu sayede dinamik yol bölümlerine sahip olabilirsiniz ve bu yöntem, basit bir yol adından çok daha fazla esneklik sunar. Örneğin, dosya uzantısına göre düzenleme için "/edit/:name.:ext" veya yerelleştirilmiş bir rota için /:lang-:region/view" gibi rotalarla eşleşebilirsiniz.

Yol parametreleri açgözlü (greedy) eşleşme yapar: "/edit/:name.:ext" şeklinde tanımlanmış bir rota verildiğinde, /edit/file.test.png adresine giderseniz, çıkarılan parametreler {name: "file.test", ext: "png"} olacaktır, {name: "file", ext: "test.png"} değil. Benzer şekilde, "/route/:path.../view/:child..." verildiğinde, /route/foo/view/bar/view/baz adresine giderseniz, çıkarılan parametreler {path: "foo/view/bar", child: "baz"} olacaktır.

Parametre Normalleştirme ​

Yol adlarına yerleştirilen yol parametreleri, okunabilirliği artırmak ve URL'yi daha temiz tutmak için sorgu dizelerinden çıkarılır. Örneğin, bu, URL dizesinde yinelenen id=1'i atlayarak GET /api/user/1/connections?sort=name-asc sunucu isteğini gönderir.

javascript
m.request({
  url: 'https://example.com/api/user/:userID/connections',
  params: {
    userID: 1,
    sort: 'name-asc',
  },
});

Ayrıca, yukarıdakiyle eşdeğer olan bu örnekte olduğu gibi, parametreleri sorgu dizesinde açıkça belirtebilirsiniz:

javascript
m.request({
  url: 'https://example.com/api/user/:userID/connections?sort=name-asc',
  params: {
    userID: 1,
  },
});

Ve elbette, bunları karıştırıp birleştirebilirsiniz. Bu, GET /api/user/1/connections?sort=name-asc&first=10 isteğini tetikler.

javascript
m.request({
  url: 'https://example.com/api/user/:userID/connections?sort=name-asc',
  params: {
    userID: 1,
    first: 10,
  },
});

Bu durum rota eşleştirmeye de uygulanabilir: sorgu dizgeleri içeren bir rotayla bile eşleşebilirsiniz. Eşleşen parametre, kolaylık sağlaması açısından saklanır; böylece bu parametrelere vnode özellikleri veya m.route.param aracılığıyla erişmeye devam edebilirsiniz. Bunun mümkün olduğunu unutmayın; ancak genellikle önerilmez, çünkü sayfalar için yolları kullanmak daha iyi bir yaklaşımdır. Sadece belirli bir dosya türü için farklı bir görünüm oluşturmanız gerektiğinde bazen işe yarayabilir; ancak bu durumda bile mantıksal olarak ayrı bir sayfa değil, sorgu parametresine benzer bir durum söz konusudur.

javascript
// Not: Bu genellikle *önerilmez* - sorgu dizeleri yerine rota tanımları için yolları tercih etmelisiniz.
m.route(document.body, '/edit/1', {
  '/edit?type=image': {
    view: function () {
      return [m(Menu), m('h1', 'Fotoğraf düzenleniyor')];
    },
  },
  '/edit': {
    view: function () {
      return [m(Menu), m('h1', 'Düzenlenen ' + m.route.param('type'))];
    },
  },
});

Sorgu parametreleri otomatik olarak algılanır; bunları kullanmak için ayrıca tanımlamanıza gerek yoktur. "/edit?type=image" gibi mevcut bir değere göre eşleşebilirsiniz, ancak değeri kabul etmek için "/edit?type=:type" kullanmanız gerekmez. Aslında Mithril.js, bu durumu m.route.param("type") === ":type" ifadesiyle birebir eşleşme aradığınız şeklinde yorumlayacaktır; bu nedenle büyük olasılıkla bu şekilde kullanmak istemezsiniz. Kısacası, sorgu parametrelerini okumak için m.route.param("key") veya rota bileşeni özniteliklerini kullanın.

Yol Normalleştirme ​

Ayrıştırılan yollar, yinelenen parametrelerden ve gereksiz eğik çizgilerden temizlenmiş olarak döndürülür ve her zaman bir eğik çizgiyle başlar. Bu küçük farklılıklar genellikle sorunlara yol açar ve yönlendirme ile yol yönetimini gereğinden fazla karmaşık hale getirir. Mithril.js, yönlendirme için yolları dahili olarak normalleştirir, ancak mevcut, normalleştirilmiş rotayı doğrudan göstermez. (Bunu m.parsePathname(m.route.get()).path aracılığıyla hesaplayabilirsiniz.)

Eşleştirme sırasında yinelenen parametreler söz konusu olduğunda, sorgu dizgesindeki parametreler yol adındaki parametrelere göre, URL'nin sonuna yakın olan parametreler ise URL'nin başına yakın olan parametrelere göre önceliklidir.

Yol Kaçışı (Escaping) ​

Bazı karakterler vardır ki, bunları tam anlamıyla kullanmak istiyorsanız kaçırmanız (escape etmeniz) gerekir. İyi haber şu ki, encodeURIComponent fonksiyonu bu karakterleri (ve daha fazlasını) kodlar. Parametreleri değiştirirken veya sorgu parametreleri eklerken bu fonksiyon otomatik olarak devreye girerek gerekli kodlamayı yapar. İşte Mithril.js'nin yorumladığı karakterler:

  • : = %3A
  • / = %2F (yalnızca yollarda gereklidir)
  • % = %25
  • ? = %3F (yalnızca yollarda gereklidir)
  • # = %23

Elbette, URL standardına göre kaçmanız gereken başka karakterler de var, örneğin boşluklar. Ancak zaten belirtildiği gibi, encodeURIComponent bunu sizin için yapar ve Mithril.js, parametreleri değiştirdiğinizde bunu örtük olarak kullanır. Bu nedenle, parametreleri m.request("https://example.com/api/user/User%20Name/:field", {params: {field: ...}}) örneğindeki gibi doğrudan belirtiyorsanız bu duruma dikkat etmeniz gerekir.

Pager
Önceki sayfaÜçüncü Taraf Entegrasyonu
Sonraki sayfaSanal DOM Düğümleri

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2024 Mithril Contributors

https://mithril.js.org/paths.html

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2024 Mithril Contributors