İmzalar Nasıl Okunur
İmza bölümleri genellikle şöyle görünür:
vnode = m(selector, attributes, children)
Argüman | Tür | Gerekli | Açıklama |
---|---|---|---|
selector | String|Object | Evet | Bir CSS seçici veya bir bileşen. |
attributes | Object | Hayır | HTML öznitelikleri veya öğe özellikleri. |
children | Array<Vnode>|String|Number|Boolean | Hayır | Alt vnode'lar. Splat argümanları kullanılarak da yazılabilir. |
dönüş | Vnode | Bir vnode. |
Tablonun üzerindeki imza satırı, fonksiyonun genel sözdizimini gösterir; fonksiyonun adını, argümanlarının sırasını ve dönüş değeri için önerilen değişken adını belirtir.
Tablodaki Argüman sütunu, imzanın hangi bölümünün ilgili tablo satırı tarafından açıklandığını gösterir. returns
satırı, fonksiyonun dönüş değeri hakkında bilgi verir.
Tür sütunu, argüman için beklenen veri tipini gösterir.
Bir dikey çizgi (|
), bir argümanın listelenen türlerden herhangi birine sahip olabileceğini gösterir. Örneğin, String|Object
, selector
'ın bir dize veya bir nesne olabileceği anlamına gelir.
Köşeli parantezler (< >
), bir Array
'den sonra dizi içindeki öğeler için beklenen türü gösterir. Örneğin, Array<String>
, argümanın bir dizi olması ve bu dizideki tüm öğelerin dize olması gerektiğini belirtir. Bir Object
'ten sonraki köşeli parantezler bir haritayı (map) gösterir. Örneğin, Object<String,Component>
, argümanın bir nesne olması, anahtarlarının dize, değerlerinin ise bileşenler olması gerektiğini ifade eder.
Bazen, belirli bir nesne imzasının gerekli olduğunu belirtmek için özel türler kullanılabilir. Örneğin, Vnode
, bir sanal DOM düğümü yapısına sahip bir nesnedir.
Gerekli sütunu, bir argümanın zorunlu olup olmadığını gösterir. Bir argüman isteğe bağlıysa, null
veya undefined
olarak ayarlanabilir veya tamamen atlanabilir; bu durumda sonraki argüman onun yerini alır.
İsteğe Bağlı Argümanlar
Köşeli parantez [ ]
içine alınmış fonksiyon argümanları isteğe bağlıdır. Aşağıdaki örnekte, url
isteğe bağlı bir argümandır:
m.request([url,] options)
Splatlar
Bir splat argümanı, argüman bir dizi ise, köşeli parantezleri atlayabileceğiniz ve bunun yerine fonksiyonda değişken sayıda argüman olabileceği anlamına gelir.
En üstteki örnekte, bu, m("div", {id: "foo"}, ["a", "b", "c"])
ifadesinin m("div", {id: "foo"}, "a", "b", "c")
şeklinde de yazılabileceği anlamına gelir.
Splatlar, CoffeeScript gibi JS'ye derlenen bazı dillerde kullanışlıdır ve ayrıca bazı yaygın kullanım durumlarında pratik kısaltmalar sağlar.
Fonksiyon İmzaları
Fonksiyonlar bir ok (->
) ile gösterilir. Okun sol tarafı girdi argümanlarının türlerini, sağ tarafı ise dönüş değerinin türünü gösterir.
Örneğin, parseFloat
'in String -> Number
imzası vardır; bu, girdi olarak bir dize aldığını ve çıktı olarak bir sayı döndürdüğünü gösterir.
Birden çok argümana sahip fonksiyonlar parantez içinde gösterilir: (String, Array) -> Number
Bileşen İmzaları
Bileşenler, m
'ye yapılan çağrılar yoluyla gösterilir, ancak ilk seçici argümanı ilgili metinde adı geçen bir sabit olarak ayarlanır:
vnode = m(m.route.Link, attributes, children)
Argüman | Tür | Gerekli | Açıklama |
---|---|---|---|
attributes.href | Object | Evet | Hedef rota. |
attributes.selector | String|Object|Function | Hayır | Bu, kullanılacak etiket adını ayarlar. Eğer belirtilmişse, m fonksiyonu için geçerli bir seçici olmalıdır, varsayılan olarak "a" olur. |
attributes.options | Object | Hayır | Bu, m.route.set 'e iletilen seçenekleri ayarlar. |
attributes | Object | Hayır | Döndürülen vnode'a uygulanacak diğer öznitelikler iletilebilir. |
children | Array<Vnode>|String|Number|Boolean | Hayır | Bu bağlantı için alt vnode'lar. |
dönüş | Vnode | Bir vnode. |
Buradaki alt öğelerin, belirtilmişse, aksi belirtilmediği sürece splat argümanları şeklinde yazılabileceği varsayılır.
Anlamlı alt öğeleri ve/veya öznitelikleri olmayan bir öğe, ilgili parametreyi tamamen atlamayı seçebilir:
vnode = m(Component, attributes)
Argüman | Tür | Gerekli | Açıklama |
---|---|---|---|
attributes.href | Object | Yes | The |
attributes | Object | Evet | Döndürülen vnode'a uygulanacak öznitelikler. |
dönüş | Vnode | Bir vnode. |