Tam açıklama: Snap'in önde gelen geliştiricilerinden biriyim.
Her şeyden önce, Snap'in ne olduğu hakkında konuşalım. Şu anda Snap ekibi hackage'de beş farklı projeyi sürdürüyor: snap-core, snap-server, heist, snap ve xmlhtml. snap-server, snap-core tarafından tanımlanan API'yi ortaya çıkaran bir web sunucusudur. soygun bir şablonlama sistemidir. xmlhtml soygun tarafından kullanılan bir XML / HTML ayrıştırma ve oluşturma kütüphanesidir. snap, hepsini bir araya getiren ve web uygulamalarını kompozit ve modüler hale getiren güçlü snaplet API'sini sağlayan bir şemsiye projesidir.
Yesod'un hackage konusunda bir dizi projesi var. Bunların çoğu (tümü?) Yesod kategorisinde listelenmiştir . Göze çarpanlardan bazıları yesod-core, warp, sebat ve mezradır.
Haskell web geliştirme gerçeği algılanan göründüğünden çok daha az münhasır ya da seçimdir. Genel olarak projeler çok gevşek bir şekilde birleştirilir ve oldukça değiştirilebilir. Warp (Yesod ekibinin web sunucusu), soygun (Snap ekibinin şablon sistemi) ve asit durumunu (Happstack projesinin kalıcılık sistemi) kullanarak bir web sitesi oluşturabilirsiniz. Snap-server'ı mezra veya kalıcı olarak da kullanabilirsiniz.
Bununla birlikte, iki projenin kesinlikle bazı farklılıkları var. Nesnel olarak işaret edebileceğim en büyük fark, Yesod projelerinin genellikle özlü DSL'ler oluşturmak için Template Haskell ve quasiquoting'i yoğun bir şekilde kullanması, Snap projeleri ise kompostlanabilirliği tercih eden birleştirici kütüphaneleri oluşturmaya bağlı. Düşünebileceğim diğer tüm farklılıklar öznel olarak Snap'e karşı önyargılı olacak. Her iki projeden sonra isimlendirilen şemsiye paketleri açıkça yukarıda belirtilen bileşenler için özel seçimler yapacak ve bu seçimler proje bağımlılıklarına yansıtılacaktır. Ancak bu hala farklı bir şey çekemeyeceğiniz ve kullanamayacağınız anlamına gelmez.
Snap'in oturumları ve kimlik doğrulaması , çeşitli veritabanları için arabirimleri ve keyfi olarak iç içe yerleştirilmiş dinamik olarak boyutlandırılabilir listeler için önceden paketlenmiş destek içeren sindirim işlevlerini kullanarak güzel form işleme ( burada ve burada ) vardır . Bunlar, takılabilir eklerin büyüyen ekosisteminden sadece birkaçı . Oturumlar ve kimlik doğrulama ek bileşenleri arka uç agnostik şekilde yazılır. Yani az miktarda tutkal koduyla, aklınıza gelebilecek hemen hemen tüm kalıcılık sistemleriyle kullanabilmelisiniz. Gelecekte, Snap bu politikaya olabildiğince sık bağlı kalacaktır.
Çoğunlukla Snap vs Yesod vs Happstack'ın seçiminin daha az özellik sorunu ve daha çok kişisel lezzet olduğunu düşünüyorum. Birisi çerçevelerden birinin başka bir şeye sahip olmadığını söylediğinde, çoğu zaman gerekli paketi içe aktararak eksik işlevselliği diğer çerçeveden çekmek oldukça kolay olacaktır.
DÜZENLEME: Büyük üç Haskell web çerçevelerinin daha ayrıntılı bir karşılaştırması için son blog gönderime göz atın . Bazı daha geniş genellemeler kullanarak daha kaba (ancak muhtemelen daha yararlı) bir karşılaştırma için Haskell Web Framework Karşılaştırma Matrisime bakın